我在類C中有一個方法foo,它可以調用foo_1或foo_2。 該方法foo()具有在C被定義,因爲FOO()是純在BaseClass的虛擬和我實際上 必須進行以下類型C.代碼的對象:C++模板實例化限制
template <class T>
class C:public BaseClass{
void foo() {
if (something()) foo_1;
else foo_2;
}
void foo_1() {
....
}
void foo_2() {
....
T t;
t.bar(); // requires class T to provide a method bar()
....
}
};
現在大多數類型ŤFOO_1將足夠,但對於某些類型foo_2將被稱爲 (取決於())。然而,編譯器堅持要實例化foo_1 和foo_2,因爲可能會調用它們。
這給T帶來了負擔,它必須提供條形方法 。
我如何告訴編譯如下:
- 如果T沒有吧(),仍然允許它作爲一個實體化類型?
我的意思是foo()在BaseClass中是純虛擬的。 – user231536 2010-06-30 17:43:42
@andand他的班名是'C'。我不認爲他指的是C語言。 – stinky472 2010-06-30 17:44:00
什麼是'something()'?它是否有一些編譯時常量? – 2010-06-30 17:48:12