对象创建错误

Oph*_*lia 0 c++ oop

我是一个完整的c ++菜鸟.开始从java学习它.所以,经过一些教程的深入研究,我最终得到了这个名为Token的类:

#include "Token.h"
#include <iostream>
using namespace std;
//int Token::frequency = 0;



Token::Token() {
    // TODO Auto-generated constructor stub
    frequency=0;
    tok = "hey i am created";
    cout << tok << endl; // prints !!!Hello World!!!

}

Token::~Token() {
    // TODO Auto-generated destructor stub
}
Run Code Online (Sandbox Code Playgroud)

这个类的标题是这样的:

#ifndef TOKEN_H_
#define TOKEN_H_
#include <string>

class Token {
    std::string tok;
    int frequency;
public:
    Token();
    virtual ~Token();
};

#endif /* TOKEN_H_ */
Run Code Online (Sandbox Code Playgroud)

它看起来像在教程中,好吧.错误是我在主类中调用它时:

#ifndef TOKEN_H_
#define TOKEN_H_
#include <iostream>
using namespace std;

int main() {
    Token myToken;
    cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    return 0;
}
#endif /* TOKEN_H_ */
Run Code Online (Sandbox Code Playgroud)

错误说:

Tokenizer.cpp:15:8:错误:预期';' 在'myToken'之前

Whyyy?我在这里查看了教程和答案,看起来我做得对吗?到底是怎么回事?而且,如果你看到我做了一些其他的废话,请告诉我,我会感激,我只是从Java转向C++ ...

Eri*_*rik 6

你有#ifndef TOKEN_H_你的main功能,这是没有意义的.这#ifndef被称为标头保护,它用于保护标头不被多次包含.您的主要功能应该进入源文件(.c或.cpp等).您不需要源文件中的标头保护,因为它们不包含在其他源文件中.

你需要你的main.cpp文件是这样的:

#include <iostream>
#include "token.h"
// other stuff, like the using namespace

int main() { /* then your main function. */ }
Run Code Online (Sandbox Code Playgroud)

实际上,大多数源文件都遵循这种模式.这与构建Token.cpp文件的模式相同.