template<typename h> class a { private: class b { public: h c; b* d; }; public: void f(b* e); }; template<typename h> void a<h>::f(b* e) { e-> //为什么这里没有可用成员啊(vs提醒的),在这里想调出b类里面的c或d都不行; } 解决方案 6 vs2013, gcc4.8.5都没问题 8 模板没智能提示很正常啊。 12 引用: 更多还是看下面吧,上面忽略一下。 下面这段代码是成功的: //template<typename h> class A { public: class B { public: int c; }; public: void f(); }; //template<typename h> void A::f() { B* d; d->c; } 但是引入类模板,就不行了 template<typename h> class A { public: class B { public: int c; }; public: void f(); }; template<typename h> void A<h>::f() { B* d; d->c;//提示没有数据成员 A<h>::B* e; e->c;//提示没有数据成员 } 代码没问题,换新版IDE试下 CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明小菜鸟问一个C++类模板内部类的问题! 喜欢 (0)赏[1034331897@qq.com]分享 (0)