我有一个假定为基类的类:

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/

10-11 22:45