2011-09-06 80 views

回答

1

。這不可能。它將始終與fn()中的任何一個衝突。

fn()語法是不同的,

void fn(); // in A 

B是,

int fn(); // in B 

你必須讓那些語法同樣在ABC實施fn()Demo

4

有沒有辦法在C來指定C::fn() 實現的一個重載A::fn()(大概另一重載 B::fn())。你能做什麼,但是,是引入一箇中間 類「重命名」的功能,像:

class RemapA : public A 
{ 
    virtual void fnInA() = 0; 
public: 
    virtual void fn() 
    { 
     fnInA(); 
    } 
}; 

class RemapB : public B 
{ 
    virtual int fnInB() = 0; 
public: 
    virtual int fn() 
    { 
     return fnInB(); 
    } 
}; 

class C : public RemapA, public RemapB 
{ 
    virtual void fnInA() { /* ... */ } 
    virtual void fnInB() { /* ... */ } 
    // ... 
}; 
相關問題