Psy*_*Kai 0 c++ pointer-to-pointer
我想将一个对象指针的指针传递给一个函数,但是得到了错误
invalid conversion from 'CustomInterface**' to LocalLogger**'
Run Code Online (Sandbox Code Playgroud)
我尝试这样的事情:
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
}
Run Code Online (Sandbox Code Playgroud)
这是非常简化的,但我需要指针指针.
由于充分的理由,编译器不允许您这样做.考虑:
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.
Run Code Online (Sandbox Code Playgroud)
如果它允许C**转换为A**,你可以B在C不使用强制转换的情况下将指针存储在指针中,这非常糟糕.