我无法弄清楚这是如何编译的。它似乎不应该,如果我在构造函数中使用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::*
是什么。或者如何使用它。
答案 0 :(得分:0)
这是指向数据成员的指针。您无法使用普通指针初始化它,这就是注释掉的表达式无法编译的原因。