0
C++では、タイプSymIntPoly
のオブジェクトを構築することができず、その上にf()
を呼び出します。以下はクラスと構造です。C++多重継承:関数の不一致?
template<typename T>
struct SymPoly
{
T f() { return this->x; }
};
struct IntPoly
{
int x;
virtual int f() = 0;
};
struct SymIntPoly : public IntPoly, public SymPoly<int>
{
};
(すなわち、彼らは同じ内部の署名を持っていない?)
は別の何かである私がコンパイラのことは知らないが、私は、コンパイラは同じ機能として二つの機能を扱わないことを感じます私がやろうとしていることの方法?
あなたはどちらを呼ぶと思われましたか?さらに、 'SymPoly'は' x'を持たず、 'IntPoly'は抽象型です。 – LogicStuff
'SymIntPoly'に' f'を定義する必要があります。そうしないと、クラスは抽象化したままになり、インスタンス化することはできません。一度 'f'を定義すると' f() 'の呼び出しにあいまいさはありません。 – Holt
1つの問題は、テンプレートクラスの 'return this-> x;'が意味をなさないということです。なぜあなたがこれをしたいのかを知ることは難しいです。しかし、あなたはCRTPのパターンにつまずくかもしれません。それはGoogleにあります。 – Bathsheba