为什么我不能使用' this->'来访问非静态函数中的静态成员?

时间:2014-04-03 09:18:41

标签: c++ oop this

为什么它会给我一个链接错误?我认为使用this->x访问静态成员是可以的。逻辑上听起来不错。我想一个实例指针可以根据OOPS概念访问类拥有的内容。

2 个答案:

答案 0 :(得分:6)

您还需要定义静态成员变量。例如:

// in .h
class some_class {
    static int v;  // it's just a declaration
};

// in .cpp
int some_class::v; // here's the defination

答案 1 :(得分:1)

声明放入Foo.h文件中:

class Foo {
    static int v;
};

defenitions 放入您的Foo.cpp文件中:

int Foo::v;

以下是一些解释:Why the static data members have to be defined outside the class separately in C++Defining static members in C++

我发现以不同方式处理链接错误很有帮助。如果你针对语言规则做了某些事情 - 将发出编译错误,所以如果你得到一个链接错误,那么你必须不是直接违反语言规则而不是你省略了一些东西。通常,错误消息会告诉您具体省略了什么。