关于 adanve 的注意事项:也接受 C++11,但首选 C++99。请不要使用虚拟功能的答案,请仅使用模板!
我想建模的是典型的“A 和 B 暗示 C”的情况。我有一些 C++ 类和一些描述它们属性的模板。例子:
template<typename S, typename T, typename U>
class Base
{
MaybeTruePropertyA<S,T> a;
MaybeTruePropertyB<S,T,U> b;
MaybeTruePropertyC<S,T,U> c;
};
可以说我这样继承:
template<typename S, typename T, typename U>
class Inherited : public Base<S,T,U>
{
TruePropertyA<S,T> a;
TruePropertyB<S,T, U> b;
};
然后我想神奇地设置PropertyC
为TrueProperty
in Inherited
。现在,这是我的问题:
- 我不知道如何神奇地做到这一点。
- 另外,我认为隐藏
MaybeTruePropertyA
在继承中是浪费内存。
有没有人解决我如何用上面的属性做一些“A和B暗示C”?您可能会更改一些内容,但属性仍应表示为TrueProperty<S,T> a
.
一个不太抽象的例子可以在这里找到:http: //pastebin.com/M209CJp4