我有一个假定为基类的类:
template<int ID>
class BaseClass { ... };
如果两个类试图使用相同的ID值从该基类继承,如何出现编译时错误。也就是说-此代码假定可以工作:
class A : BaseClass<1> { ... }
class B : BaseClass<2> { ... }
但是此代码假定会导致错误:
class A : BaseClass<1> { ... }
class B : BaseClass<1> { ... }
一个人怎么能做到这一点?
BOOST_STATIC_ASSERT有帮助吗?
最佳答案
我认为那是不可能的。
如果可能的话,我们还可以使编译器也为以下代码生成错误,从概念上讲,这与您的代码等效。
struct Base {};
struct OtherBase {};
struct A : Base {}; //Base is used here!
struct B : Base {}; // error - used base class. please use some other base!
struct C : OtherBase {}; // ok - unused based!
关于c++ - 防止两个类从具有相同模板参数的基类继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5298466/