我是一个完整的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++ ...
你有#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文件的模式相同.