请教C++模板类中,模板类指针作为函数实参时的c2036未知大小错误

eleven121 2014-06-18 05:12:30
大家好~平常用模板类用得不是很多,遇到了一个未知大小C2036错误。请大家指点
首先定义了一个模板类
template <class T>
class acrp_TLM
{
public:
void acrp_TLM()
{mem=new T[1024];}
status burst_read(T* data,unsigned int address,unsigned int length=1)
....
private:
T* mem;
}
然后在cpp文件中实现
status acrp_TLM<class T>::burst_nread(T *data,unsigned int address,unsigned int length=1)
{
if(address<m_start_address||address>m_end_address)
return TRANSFER_ERROR;
if(address+length>m_end_address)
return TRANSFER_ERROR;
data=&mem[address-m_start_address];
return TRANSFER_OK;
}
希望实现的功能是其它类调用这个函数,读取mem中的length长度的T类型数据,通过指针data,将mem数组中address处的元素地址赋给data。
编译的错误显示在data=&mem[address-m_start_address];这行
error C2036: “T *”: 未知的大小
请问大家什么原因,如何改正或者通过其它方法传回一大堆数据,但是这个数据应该是模板类的。
谢谢大家
...全文
213 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
buyong 2014-06-19
  • 打赏
  • 举报
回复
模板一般是定义和实现都在头文件里,否则很麻烦
eleven121 2014-06-18
  • 打赏
  • 举报
回复
谢谢! adlay~ 我的C2036错误是因为实现的时候 status acrp_TLM<class T>::burst_nread(T * ..... 不对,而应该是 template <class T> status acrp_TLM<T>::burst_nread(T * 其它的错误是因为我截取的代码哦,复制得不全,其实没错哦 再次谢谢adlay
www_adintr_com 2014-06-18
  • 打赏
  • 举报
回复 1
错误太多了: 1. 构造函数不能返回任何值, void 也不行 2. 类定义要以 ; 结尾 3. 类里面定义的是 burst_read, 你实现的是 burst_nread 4. 模板函数的实现要放在 .h 里面,不要放在 .cpp 里面 5. 实现的时候语法 status acrp_TLM<class T>::burst_nread(T * ..... 是不对的, 应该 template <class T> status acrp_TLM<T>::burst_nread(T *

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧