关于C++模版的一个问题求教,如果取模板类内的一个结构体的指针。

template<classT>classA{public:structB{Tt;};B*GetB();private:B*pB;};template<classT>A<... template <class T>
class A
{
public:
struct B
{
T t;
};
B* GetB();
private:
B* pB;
};

template <class T>
A<T>::B* A<T>::GetB()
{
return this->pB;
}

在VS2005编译的时候会报
错误 2 error C2143: 语法错误 : 缺少“;”(在“*”的前面)
错误 3 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认
错误 4 fatal error C1903: 无法从以前的错误中恢复;正在停止编译
,求问谁知道怎么解决吗?

实际就是不认识A<T>::B*是什么。
我知道把B拿出去可以通过, 但这个代码其实是从MS Speech SDK的示例中抽出来的一段
,然后我把它简化了, 但我不希望改原来的代码结构. 原例子是:
我认为应该是编译器版本的差异导致的, 而且已经直接通过修改工程属性参数,纠正了一些会报编译错误的地方.

/ CSPList<TYPE, ARG_TYPE>

template<class TYPE, class ARG_TYPE>
class CSPList
{
protected:
struct CNode
{
CNode* pNext;
CNode* pPrev;
TYPE data;
};
public:
.....
CNode* NewNode(CNode*, CNode*);
......
}

template<class TYPE, class ARG_TYPE>
CSPList<TYPE, ARG_TYPE>::CNode*
CSPList<TYPE, ARG_TYPE>::NewNode(CSPList::CNode* pPrev, CSPList::CNode* pNext)
{
......
}
展开
 我来答
忘至白葬不情必0T
2011-12-16 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
B结构也要模板化。

template <class T> struct B
{
T t;
};

template <class T>
class A
{
public:
B<T>* GetB();
private:
B<T>* pB;
};

template <class T>
B<T>* A<T>::GetB()
{
return this->pB;
}

void main()
{
}
丶下里巴人
2011-12-16 · TA获得超过1660个赞
知道小有建树答主
回答量:334
采纳率:50%
帮助的人:460万
展开全部
#include<iostream>
using namespace std;
template <class T>
struct B
{
T t;
};
template <class T1>
class A
{
public:
B<T1>* GetB();
private:
B<T1>* pB;
};

template <class T1>
B<T1>* A<T1>::GetB()
{
return this->pB;
}
int main()
{
A<int> a;
B<int>* b;
b=a.GetB();
cout<<b<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
duck_lwz
2011-12-17 · TA获得超过512个赞
知道小有建树答主
回答量:313
采纳率:0%
帮助的人:338万
展开全部
我用VC6.0编译,连接,运行都OK啊,没错误。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式