3

我很难编译这个。我认为它与静态变量有关,但我不是 100% 确定我在做什么。这是我不断收到的错误消息:

架构 x86_64 的未定义符号:“Counter::nCounters”,引用自:main.o 中的 Counter::Counter(int, int)

计数器::getNCounters() 在 main.o

Counter::Counter(int, int) 在 Counter.o

Counter::getNCounters() 在 Counter.o

ld:未找到架构 x86_64 的符号

clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

这是头文件:

#ifndef project1_Counter_h
#define project1_Counter_h

class Counter
{
private:
int counter;
int limit;
static int nCounters;

public:
Counter(int, int);
void increment();
void decrement();
int getValue();
static int getNCounters();
};

#endif

这是 .cpp 文件:

#include "Counter.h"

Counter::Counter(int a, int b)
{
counter = a;
limit = b;
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;
}

而 main.cpp 只是一个简单的 Hello World 程序。任何帮助,将不胜感激。

4

1 回答 1

6

我相信你需要用一个值初始化 nCounters 。

尝试添加

int Counter::nCounters = 0;

类之外的某个地方,或将其初始化为:

static int nCounters = 0;

反而。

于 2012-10-19T05:25:32.410 回答