c++ - 对象创建错误

标签 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
}

这个类的标题是这样的:

#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/

相关文章:

ios - 如何从自定义单元格类更改数据源

java - 为什么 Collections.UnmodifiableMap.UnmodifiableEntrySet 覆盖 stream() 方法?

c++ - char数组如何存储在C++中?

c++ - 在成员函数中创建对象

oop - 关于纯 OO 的各种问题(在没有 ide 的情况下进行设置;教程;相关书籍)

java - 多态调用

c++ - 可变参数模板和类型安全

c++ - _pgmptr 发生了什么?

c++ - #pragma hdrstop

ruby - 这两段代码有什么区别?