我有以下方案:C++虛函數,在派生類中聲明晉升爲公衆
class Interface
{
virtual ~Interface() { }
virtual void foo() const = 0;
virtual void bar() const = 0;
}
//Interface is derived privately mostly for preventing upcast outside
class Derived : private Interface
{
public:
void foo() const;
private:
void bar() const;
}
這並不編譯:foo
是私人的。有沒有什麼辦法可以在不添加虛擬公共功能的情況下將其公開化?
您無法從'Derived'調用'foo()',因爲它是私有的。你必須保護它 –
它在MSVS 2013上編譯得很好。我相信OP只是在'Interface'中用'Derived'中的'foo'重寫'foo'。它沒有爲我編譯的原因是因爲'Interface'的析構函數是'private'。 – Nard
這甚至不會編譯,因爲〜Interface()是私有的。 – arayq2