另一个初始化静态c ++类成员

时间:2016-01-28 04:33:31

标签: c++

好吧,所以我已经阅读了几个类似的问题,我仍然不明白为什么这段代码不起作用。

我只想写一个带有静态int成员的类。然后使用不同的实例增加静态成员。我不明白为什么这不起作用。请帮助c ++小块。

class Timer {
public:
    static int seconds;
    Timer() {}
    void tick();
    std::string to_string();
};
void Timer::tick() {
    Timer::seconds++;
}
std::string Timer::to_string() {
    return ("Timer: " + std::to_string(Timer::seconds) + "s.\n");
}


int main() {
    Timer::seconds = 0;
    Timer s = Timer();
    Timer t = Timer();
    s.tick();
    t.tick();
    std::cout << s.to_string() << std::endl;
    std::cout << t.to_string() << std::endl;

    system("pause");
    return 0;
 }

1 个答案:

答案 0 :(得分:1)

你需要一行

int Timer::seconds = 0;

在类定义之外。如:

class Timer {
public:
    static int seconds;
    Timer() {}
    void tick();
    std::string to_string();
};

int Timer::seconds = 0;

该行

    static int seconds;

仅声明static成员变量。必须使用上面的语法在外部定义它。