0
我不明白這是如何編譯的。它似乎不應該,如果我在構造函數中使用非NULL值,它不會。C++`int * class :: * member = NULL`編譯,爲什麼?
#include <stdio.h>
class MyClass{
private:
int *first;
public:
MyClass();
};
MyClass::MyClass(){
int whatever = 42;
//int* MyClass::*first = &whatever;//This does not compile
int* MyClass::*first = NULL;//This compiles
}
int main(){
MyClass doSomething;
return 1;
}
看來,通常被用於靜態瓦爾,這不是這種type Class::member = value
語法。
另外,成員名稱前面有一個星號,這更加令人困惑。
如果我將行切換到註釋掉的行,編譯器會像預期的那樣抱怨。
error: cannot convert ‘int*’ to ‘int* MyClass::*’ in initialization
雖然我確實希望發生錯誤,但我不知道int* MyClass::*
是什麼類型。或者如何使用它。
我不確定,但我懷疑你已經創建了一個指向成員變量的指針。 http://stackoverflow.com/questions/670734/c-pointer-to-class-data-member –
嘗試'int * MyClass :: * first =&MyClass :: first;'。給它一個不同的名字可能會有點混亂。 –
_static vars_在哪裏? – P0W