小菜鸟问一个C++类模板内部类的问题

C++语言 码拜 8年前 (2016-09-22) 1202次浏览
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)