【问题标题】:Error: Initializing Argument 1 of [closed]错误:初始化 [关闭] 的参数 1
【发布时间】:2014-11-24 21:38:58
【问题描述】:

我环顾四周,看到了其中的不少,但没有一个为我的问题提供解决方案。我收到以下代码的编译错误:

错误:

代码:

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)

我看到的有关此错误的所有其他帖子都涉及声明/传递字符串数组参数的语法不正确,但我已对其进行了两次和三次检查,并且确定它是正确的;虽然我之前错了..

【问题讨论】:

  • 您遇到 what 编译错误?你只发布了一半。
  • 我不敢相信。编译器清楚地说明了参数 1,而您所显示的关于参数 1 的所有内容都是param1。根本不可能弄清楚未显示的内容有什么问题。
  • 抱歉,我在写完之前不小心按了 Enter 键。现在修复它。
  • 离完整的错误消息还很远。还有一两行包含详细信息,例如转换错误或其他内容。
  • @user3776749 至少会有更多的输出行(通常是Note: ....)。包括他们。或者,你知道,也许可以发布一个sscce

标签: c++ arrays function function-parameter


【解决方案1】:

使用我的水晶球:

  • 您正在按值传递 Hash
  • 这需要复制构造函数,
  • 你没有(或者它是拙劣的、私密的或显式的)

所以,参考Hash

void topWords(Hash const& t, std::string const& word, std::string* topA); 

还有,

  • string[] 不是 C++ 中的类型
  • 不要使用using namespace std;
  • 不要使用原始数组;使用std::vector&lt;std::string&gt;(或std::array&lt;std::string, N&gt;

【讨论】:

  • 修复此问题后,OP 将可能遇到“无法从 const 对象 t 调用非 const 成员 Hash::itemCount()”消息(或接近该消息,无论如何)。它可能已经是const,但鉴于发布的代码我有点怀疑它不是。 (和 +1)
  • 啊,不要悲观:)我用我的水晶球“好”(嗯,...我希望)
  • ...嘿,你有你的水晶球(可怕的复制-ctor),我有我的=P
  • @JasonC 幸运的是他们在 SO:Why is using namespace std considered a bad practice。 OP 已经知道向量在这里可能是一个很好的匹配(我认为 topA 可能是一个输出参数......那么应该真的是一个向量返回值)。顺便说一句,“goto 被认为有害”是 *wel-argued* 作品的典型示例。我很高兴能在那种文化中排名(但我可能太懒了)
  • @remyabel 我错过了。我可能应该说“string[]”本身不是一个完整的类型。当然,string[] 类型的静态对象可以存在,然后会在以后得到一个完整的类型。但是,string[] 和 VLA 领域 C99 一样,根本不在 c++ 中(尽管 g++ 可能接受它作为 GNU 扩展)
猜你喜欢
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
  • 2013-02-10
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多