49

我在第 6 行收到此错误:

error: expected unqualified-id before '{' token

我说不出有什么问题。

#include <iostream>

using namespace std;

class WordGame;
{               // <== error is here on line 6
public:

    void setWord( string word )
    {
        theWord = word;
    }
    string getWord()
    {
        return theWord;
    }
    void displayWord()
    {
        cout << "Your word is " << getWord() << endl;
    }
private:
    string theWord;
}


int main()
{
    string aWord;
    WordGame theGame;
    cin >> aWord;
    theGame.setWord(aWord);
    theGame.displaymessage();

}
4

6 回答 6

36

这里不应该有分号:

class WordGame;

...但是在您的类定义的末尾应该有一个:

...
private:
    string theWord;
}; // <-- Semicolon should be at the end of your class definition
于 2012-04-13T04:34:03.680 回答
9

作为旁注,请考虑将 setWord() 中的字符串作为 const 引用传递,以避免过度复制。此外,在 displayWord 中,考虑将其设为 const 函数以遵循 const 正确性。

void setWord(const std::string& word) {
  theWord = word;
}
于 2012-04-13T04:48:04.903 回答
7

去掉后面的分号WordGame

当班级规模小得多时,你真的应该发现这个问题。当您编写代码时,您应该在每次添加六行代码时进行编译。

于 2012-04-13T04:33:51.687 回答
3

分号应该在类定义的末尾而不是名称之后:

class WordGame
{
};
于 2014-06-02T09:33:32.173 回答
0

对于它的价值,我遇到了同样的问题,但这不是因为多了一个分号,而是因为我在前面的语句中忘记了一个分号。

我的情况是这样的

mynamespace::MyObject otherObject

for (const auto& element: otherObject.myVector) {
  // execute arbitrary code on element
  //...
  //...
} 

从这段代码中,我的编译器不断告诉我:

error: expected unqualified-id before for (const auto& element: otherObject.myVector) { etc... 我的意思是我写错了for循环。没有!我只是;在声明后忘记了 a otherObject

于 2019-06-01T01:57:57.683 回答
0
于 2020-10-07T02:19:13.337 回答