【发布时间】:2018-07-31 11:44:36
【问题描述】:
我正在学习 C++,但我正在研究的实验室遇到了一个奇怪的问题。我似乎没有正确引用事物的地方是我的猜测。
它基本上会抛出一个错误,例如找不到类头文件中声明的静态 int nCounters。
//counter.h的开始
class Counter
{
private:
int counter;
int limit;
static int nCounters;
public:
Counter(int x, int y);
void increment();
void decrement();
int getValue();
int getNCounters();
};
//counter.h结束
//counter.cpp的开始
#include "counter.h"
Counter::Counter(int x, int y)
{
counter = x;
limit = y;
nCounters++;
}
void Counter::increment()
{
if (counter < limit)
{
counter++;
}
}
void Counter::decrement()
{
if (counter > 0)
{
counter--;
}
}
int Counter::getValue()
{
return counter;
}
int Counter::getNCounters()
{
return nCounters;
}
//counter.cpp结束
//counter_test.cpp的开始
#include <iostream>
#include "counter.cpp"
using namespace std;
int main(){
Counter derp(5,5);
cout << derp.getValue();
return 0;
}
//counter_test.cpp结束
【问题讨论】:
-
如果我删除 static 它编译并运行得很好。这一定是我在这里不明白的东西。
-
通过“C++ 未定义引用静态成员”之类的搜索可以找到数十个甚至数百个已回答的 Stack Overflow 问题。
-
@aschepler Google 搜索 未定义的引用静态变量 c++ 站点:stackoverflow.com 说“大约 48,200 个结果”
标签: c++ oop static-variables