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