C ++我是否错误地使用了void函数?

时间:2015-02-23 12:38:00

标签: c++ function void

错误:

  • C2182:'tellStats':非法使用'void'类型
  • C2440:'初始化':无法从'std :: string'转换为'int'
  • 不允许使用不完整的类型。

所有这些错误都可以在这一行找到:

    //ClassPractice.cpp
    void tellStats(pick);

调用...

    //Functions.h
    void tellStats(string);

定义为......

    //Functions.cpp
        void tellStats(string choice)
    {
        if (choice == "wizard")
            {
            cout << "These are the Wizard's stats:" << endl;
            cout << "Max HP: 80\nSpeed: 7\nAttack: 10" << endl;
            }
    }

我不明白为什么我会收到这些错误。我不知道为什么int甚至涉及错误。在这些代码部分中,我没有看到任何涉及int的内容。我以为我正确使用'void',因为我不想用函数返回值。

2 个答案:

答案 0 :(得分:6)

你不要用返回类型调用函数。不要说:

void tellStats(pick);

只需使用tellStats(pick);即可。

那条线是你调用tellStats的唯一地方吗?

答案 1 :(得分:3)

int是一只红鲱鱼。由于历史原因,编制者内部通常会在int错过某种类型时替换tellStats。这通常不应该发生,但是在这里你看到这个暴露,因为编译器试图在第一个错误后继续。编译器错误地猜测您要定义类型为 void int的变量{{1}}并使用字符串初始化该变量。