我有一个模板的C++类暴露了一些方法,例如添加方法模板特
template<int X, int Y>
class MyBuffer {
public:
MyBuffer<X,Y> method1();
};
现在,我想如果X == Y.我已经这样做了,露出更多的方法来这个班通过继承MyBuffer,
template<int X>
class MyRegularBuffer : public MyBuffer<X,X> {
public:
MyRegularBuffer method2();
};
现在,问题是我希望能够做到
MyRegularBuffer<2> buf = ...
MyRegularBuffer<2> otherBuf = buf.method1().method2();
但我不知道如何做到这一点。我试图想到拷贝构造函数,转换操作符等,但是我的C++技巧不幸有点生疏。
编辑:我要补充一点,这些对象的创建是相对便宜(和也,也不会发生了很多),这意味着这将是确定做这样的事情:
MyRegularBuffer<2> buf = ...
MyRegularBuffer<2> temp = buf.method1(); // Implicit conversion
MyRegularBuffer<2> otherBuf = temp.method2();
的那么问题是,我怎样才能定义这样的转换。我认为转换运算符需要在MyBuffer中,但是我希望它只在X == Y时可用。
完全不可理解。例如,你谈论“转换操作符”,但没有。发布一些真实的代码。 – 2010-07-29 21:15:06
@尼尔,我想用户已经尽全力问了一个真正的问题。我想我有点理解它。 – 2010-07-29 22:33:42
@Aaron在这种情况下,请分享您的理解。 – 2010-07-29 22:36:30