好吧,所以我已经阅读了几个类似的问题,我仍然不明白为什么这段代码不起作用。
我只想写一个带有静态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;
}
答案 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
成员变量。必须使用上面的语法在外部定义它。