关于C++嵌套类成员函数的实现的问题

template<classtype>classA{public:classB{public:B*test(void);};};template<classtype>A<... template<class type>
class A
{
public:
class B
{
public:
B* test(void);
};
};

template<class type>
A<type>::B* A<type>::B::test(void)
{
return 0;
}

成员函数的实现部分编译报错。
好像编译器在外部不认识A<type>::B一样。

错在哪里?怎么解决?
展开
 我来答
wanglixin1001
2012-12-31 · TA获得超过4174个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:891万
展开全部
如下:
template<class type>
class A{
public:
class B{
public:
B* test(void);
};
};
template<class T>
typename A<T>::B* A<T>::B::test(void) // 这里加上typename,表明A<T>::B是一个类才可以。
{
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
402407
2012-12-31 · TA获得超过771个赞
知道小有建树答主
回答量:726
采纳率:50%
帮助的人:911万
展开全部
class A
{
class B
{
void print();
}
}

void A::B::print() {printf("ok\n");}
更多追问追答
追问
您没有解决我的问题。
您把返回类型改成void了,我需要A::B*的返回类型。
返回非嵌套类型都不会出错,问题就在于返回嵌套类型时会出错,您有解决办法吗?
追答
我的回答当时没有看到你的问题补充。
我用你的代码编译了一下没有问题。你是不是实现的时候,是在另外一个文件中?模板类的实现,好像一般都是在一个文件中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式