C++ 如何在多重继承下从一个基类继承所有typedef?
假设我有两个基类和一堆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
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我做那件事是办不到的。您需要手动解决冲突。