我正在尝试为一个类编写一些东西,该类涉及使用Token
类创建一个对象并将其打印出来。这是我的主要方法:
int main(int argc, char** argv) {
Token tok(10, "test", 1, 2);
printf("%d\n", tok.type());
}
这是我的Token.cc
文件及相关方法:
Token::Token(int t, string str, int l, int c) {
int tokType = t;
string lexStr = str;
int lineNum = l;
int charPos = c;
}
int Token::type() {
return tokType;
}
这是我的Token.h
文件:
#ifndef TOKEN_H
#define TOKEN_H
using namespace std;
#include <string>
class Token{
private:
public:
Token(int t, string str, int l, int c);
~Token();
int type();
int tokType;
string lexStr;
int lineNum;
int charPos;
};
#endif
程序编译正常,但是当我运行它时会打印一个看似随机的数字,例如1475212264
或-258154088
或该长度的其他随机数。
任何想法可能会出错?这让我发疯了。
由于
答案 0 :(得分:1)
我相信在你的构造函数中,因为你正在重新定义所有变量,所以你将它们的范围限制在构造函数中。这个数量也是因为Token类的成员变量最终没有被设置为传递给构造函数的值。因此,由于type(),您最终得到了未初始化的数据。
尝试删除构造函数中的数据类型,如下所示:
Token::Token(int t, string str, int l, int c) {
tokType = t;
lexStr = str;
lineNum = l;
charPos = c;
}
看看是否有帮助。