如何使用带指针的转换构造函数?

Tim*_*ney 1 c++ constructor type-conversion implicit-conversion

我有一个C可以转换为类的类A和一个A*作为参数的函数.我想用a调用它C*,但我似乎无法让转换构造函数工作.我明白了:error: cannot convert ‘C*’ to ‘A*’ for argument ‘1’ to ‘void doSomething(A*)’.我究竟做错了什么?

class C {
};

class A {
public:
    A(C* obj) {}
};

void doSomething(A* object);

int main()
{
    C* object = new C();
    doSomething(object);
}
Run Code Online (Sandbox Code Playgroud)

K-b*_*llo 5

在您的情况下,只能为用户定义的类型定义转换构造函数A.但是,它们不像指针那样适用于基本类型.A*

如果doSomethingA const&取代(或简单地A),那么转换构造函数将按预期调用.