我想将一个对象指针的指针传递给一个函数但是得到错误
invalid conversion from 'CustomInterface**' to LocalLogger**'
我尝试这样的事情:
class LocalLogger
{}
class CustomInterface: public LocalLogger
{}
foo(LocalLogger** const obj)
{
// do something
}
bar()
{
CustomInterface** p_p_obj;
CustomInterface* p_obj = new CustomInterface();
p_p_obj = &p_obj;
foo(p_p_obj); // <-- here is the error
}
这是非常简化的,但我需要指向指针的指针。
答案 0 :(得分:6)
编译器不允许您这样做,原因很充分。考虑:
class A { };
class B : public A { };
class C : public A { };
void make_an_A(A** out) { *out = new B(); }
C* pC;
make_an_A(&pC); // Doesn't compile.
如果允许C**
转换为A**
,您可以在指向B
的指针中存储指向C
的指针,而无需使用强制转换,这非常糟糕。