我在类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