我有一個模板的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