来自'类**'的无效转换到基地类**'

时间:2014-07-10 09:54:52

标签: c++ pointer-to-pointer

我想将一个对象指针的指针传递给一个函数但是得到错误

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
}

这是非常简化的,但我需要指向指针的指针。

1 个答案:

答案 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的指针,而无需使用强制转换,这非常糟糕。