这是我的班级代码
class A {
public:
A(int* a){}
};
int main()
{
int*pptr=nullptr;
A(pptr); // compile error : there is no matched constructor for type A
// but..... the pptr is certainly int*!!!
A((int*)(pptr));// if I write like this will be fine,compiler never tells me the error
A a(pptr);// fine too
A a=A(pptr);// fine too
}
我想知道这种情况是什么原因,无论是MSVC还是g++都报同样的错误
A(pptr);
声明类型为 pptr
的变量名称 A
。和写A pptr;
一样。由于您已经在同一范围内声明了一个名为 pptr
的变量,因此编译失败。