C++ 在联合内部访问类
我在第三方库中有classC++ 在联合内部访问类,c++,namespaces,unions,C++,Namespaces,Unions,我在第三方库中有classA的声明,因此无法修改它。 我需要使用类B的声明将其传递给一个方法,有没有一种方法可以在不修改类a的情况下执行此操作? 当我尝试这个: #include <iostream> using namespace std; class A { public: union { class B { public: int x; }; }un; };
A
的声明,因此无法修改它。
我需要使用类B
的声明将其传递给一个方法,有没有一种方法可以在不修改类a
的情况下执行此操作?
当我尝试这个:
#include <iostream>
using namespace std;
class A
{
public:
union {
class B
{
public:
int x;
};
}un;
};
void foo(A::B & test)
{
}
int main() {
A::B test;
test.x=10;
cout << test.x << endl;
return 0;
}
致:
这将通过以下方式实现:
A::T::B test;
您可以使用
decltype
获取联合类型,然后可以访问B
:
decltype(std::declval<A&>().un)::B test;
decltype(std::declvalWow!太快了!谢谢,顺便说一句,我想知道c++03是否也可以这样做
A::T::B test;
decltype(std::declval<A&>().un)::B test;