我希望在C++上创建一个漂亮的界面,每个实现都需要在自身上定义其附加部分。
我想做类似于这样的事情:
class A{
...
virtual A& operator+(const A& other) =0;
...
}
// this is my interface or abstract class.
class B : A{
...
B& operator+(const B& other);
...
}
// this is the kind of implementation i would like. a B element can be added by another B element only ! At least this the constraint I am aiming at.
由于C++不支持逆变,因此我的函数B& operator+(const B& other)
没有实现virtual A& operator+(const A& other)
。有没有什么巧妙(但略微简洁)的方法可以做到这一点?
class B : A
和class C : A
都可以作为A
使用? - foobartemplate
class A
{
virtual T& operator+(const T& other) =0;
};
使用类class B : A<B>{...};
- tgmath