0

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

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
}

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

4

1 回答 1

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.

如果它允许 aC**转换为A**,您将能够在不使用强制转换的情况下将指针存储在指针BC,这非常糟糕。

于 2014-07-10T10:02:35.860 回答