如何取实例中的typedef类型, 及取声明中成员的类型?

GKatHere 2017-02-10 08:28:04
如题:
如何取实例中的typedef类型, 及取声明中成员的类型?

struct A
{
typedef int VT;
int a;
};
int _tmain(int argc, _TCHAR* argv[])
{

//TODO: tmain
//std::cout<<fun(11);
A a;
decltype(a.a) aa;
//decltype(A::a) aa2; // error C2597: 对非静态成员“A::a”的非法引用
A::VT av;
//a.VT av2; // error C2274: “函数样式转换”: 位于“.”运算符右边时非法
//decltype(a.VT) aa2; // error C2274: “函数样式转换”: 位于“.”运算符右边时非法





getchar();
return 0;
}


...全文
166 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
GKatHere 2017-02-11
  • 打赏
  • 举报
回复
完成

#define insttype(inst__) std::enable_if<true, decltype(inst__)>::type
#define mbrtype(cls__, mbr__) std::enable_if<true, decltype(((cls__*)(0))->mbr__)>::type 

ri_aje 2017-02-11
  • 打赏
  • 举报
回复
试了一下没问题,编译器太烂了吧。
yes-hyh 2017-02-10
  • 打赏
  • 举报
回复
不能通过实例来取类里面的typedef的类型。理论上来讲, struct A{typedef int VT}; VT是一个类型,这个类型是被类型A所包含的。而A的实例具体的体现是在运行时,所以他只包含数据,而不能包含类型。所以只能A::VT,而不能a.VT。a.xxx访问的是a这个实例中的xxx的数据。
yshuise 2017-02-10
  • 打赏
  • 举报
回复
a不是静态变量所以不能A::a VT只是一个类型,所以可以A::VT

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧