Ошибка: инициализация аргумента 1 из
Я осмотрелся и увидел довольно много из них, но ни один из них не дал решения моей проблемы. Я получаю эту ошибку компиляции с помощью следующего кода:
ОШИБКА:
КОД:
const int TOP_WORDS = 25;
...
void topWords(Hash t, string word, string topA[]);
int main()
{
...
Hash table1;
string word = "example";
string topWordsArr[TOP_WORDS];
table1.addItem(word);
topWords(table1, word, topWordsArr);
...
}
...
void topWords(Hash t, string word, string topA[])
{
int i = 0;
int tempCount = t.itemCount(word);
int tempCount2 = t.itemCount(topA[i]);
while (tempCount > tempCount2 && i < TOP_WORDS) {
i++;
tempCount2 = t.itemCount(topA[i]);
}
if (i > 0)
Все остальные сообщения, которые я видел об этой ошибке, содержали неправильный синтаксис с объявлением / передачей параметра массива строк, но я дважды и трижды проверил все это, и я уверен, что это правильно; хотя я был неправ раньше..
1 ответ
Решение
Используя мой хрустальный шар:
- Вы передаете
Hash
по значению - это требует конструктора копирования,
- у вас его нет (или он испорчен, частный или явный)
Итак, возьмите Hash
по ссылке
void topWords(Hash const& t, std::string const& word, std::string* topA);
Также,
string[]
это не тип в C++- не использовать
using namespace std;
- не используйте сырые массивы; использование
std::vector<std::string>
(или жеstd::array<std::string, N>
)