无法正确打印从C ++中的函数返回的整数

时间:2015-09-23 21:49:59

标签: c++ methods

我正在尝试为一个类编写一些东西,该类涉及使用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或该长度的其他随机数。

任何想法可能会出错?这让我发疯了。

由于

1 个答案:

答案 0 :(得分:1)

我相信在你的构造函数中,因为你正在重新定义所有变量,所以你将它们的范围限制在构造函数中。这个数量也是因为Token类的成员变量最终没有被设置为传递给构造函数的值。因此,由于type(),您最终得到了未初始化的数据。

尝试删除构造函数中的数据类型,如下所示:

Token::Token(int t, string str, int l, int c) {
    tokType = t;

    lexStr = str;

    lineNum = l;

    charPos = c;
}

看看是否有帮助。