C++ 如何在多重继承下从一个基类继承所有typedef?

C++ 如何在多重继承下从一个基类继承所有typedef?,c++,c++11,C++,C++11,假设我有两个基类和一堆typedef: struct X { typedef int type1; typedef float type2; // A bunch of other typedefs. }; struct Y { typedef long type1; typedef char type3; // Some other typedefs. }; struct Z : public X, public Y { }; 如何指定我希望Z继承X的所有Type

假设我有两个基类和一堆typedef:

struct X {
  typedef int type1;
  typedef float type2;
  // A bunch of other typedefs.
};

struct Y {
  typedef long type1;
  typedef char type3;
  // Some other typedefs.
};

struct Z : public X, public Y {
};
如何指定我希望Z继承X的所有TypeDef,而不手动解决每个类型的冲突?我的意思是O(1)代码来实现这一点,而不是O(n),其中n是冲突类型的数量。同样在元编程的情况下,人们不知道X和Y中的确切typedef,因此手动解决冲突是不可能的


在单继承的情况下,它将自动使用基类的typedef,因此我不需要手动指定它们。

使用
private
protected
继承,而不是
public
继承,然后使用
using
语句声明要在
Z
中使用的项,例如:

struct Z : protected X, protected Y
{ 
    using X::type1;
    using X::type2;
    // ...
}; 

嗯,很好用。您只需要解决冲突

struct X
{
    typedef int type1;
    typedef int type2;
};

struct Y
{
    typedef double type1;
};

struct Z : public X, public Y 
{
    type2 z1;
    typedef X::type1 type1;
    type1 z2;
};

int main()
{
    Z z;
    Z::type2 x;
    Z::type1 y;
}

为什么不把你需要的所有类型都放在一个头文件中呢?你的答案是可行的,但需要手工来解决冲突。我更新了我的问题,以明确我在寻找什么。不管怎样,谢谢你的回答。@I我做那件事是办不到的。您需要手动解决冲突。