C++创建未命名类对象的问题

问题描述 投票:0回答:1

这是我的班级代码

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++都报同样的错误

c++11
1个回答
0
投票

A(pptr);
声明类型为
pptr
的变量名称
A
。和写
A pptr;
一样。由于您已经在同一范围内声明了一个名为
pptr
的变量,因此编译失败。

© www.soinside.com 2019 - 2024. All rights reserved.