我是一个完全的 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
}
这个类的标题是这样的:
#ifndef TOKEN_H_
#define TOKEN_H_
#include <string>
class Token {
std::string tok;
int frequency;
public:
Token();
virtual ~Token();
};
#endif /* TOKEN_H_ */
教程里的样子,不错。错误是当我在我的主类中调用它时:
#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_ */
错误说:
Tokenizer.cpp:15:8: error: expected ‘;’ before ‘myToken’
为什么?我在这里查看了教程和答案,看起来我做的对吗?到底是怎么回事?而且,如果你看到我做了一些其他的废话,请告诉我,我会很感激,我刚从 Java 转到 C++...
最佳答案
您的 main
函数周围有 #ifndef TOKEN_H_
,这是没有意义的。 #ifndef
称为 header guard,它用于保护 header 不被多次包含。您的主要功能应该进入源文件(.c 或 .cpp 等)。您不需要源文件中的 header 保护,因为它们不包含在其他源文件中。
你需要你的 main.cpp 文件是这样的:
#include <iostream>
#include "token.h"
// other stuff, like the using namespace
int main() { /* then your main function. */ }
实际上,您的大部分源文件都将遵循这种模式。这与构建 Token.cpp 文件时使用的模式相同。
关于c++ - 对象创建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30266344/