模板继承问题,编译报错

demofere 2015-01-08 04:15:31

template<typename T>
class Number
{
public:
Number(T val)
{
m_value = val;
}

T GetVal()
{
return m_value;
}
private:
T m_value;
};

class Integer: public Number<int>
{

};

int _tmain(int argc, _TCHAR* argv[])
{
Integer i(5);


return 0;
}





1>------ Build started: Project: test, Configuration: Debug Win32 ------
1>Compiling...
1>test.cpp
1>d:\my\code\fvck\dlib\test\test.cpp(32) : error C2664: 'Integer::Integer' : cannot convert parameter 1 from 'int' to 'const Integer &'
1> Reason: cannot convert from 'int' to 'const Integer'
1> No constructor could take the source type, or constructor overload resolution was ambiguous
1>Build log was saved at "file://d:\my\code\fvck\dlib\test\Debug\BuildLog.htm"
1>test - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


刚学模板,请教下这是什么原因,Integer集成了 Number<int>,应该是存在一个Integer(int val)的构造函数,为什么会报这个错叫呢
...全文
124 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
demofere 2015-01-08
  • 打赏
  • 举报
回复
引用 3 楼 lovesmiles 的回复:
class Integer: public Number<int> { public: Integer(int val):Number(val){} }; 因为你没有定义接受一个参数的构造函数。 Integer的默认构造函数不接受参数。
是这样,可以编译了,谢谢大牛
pengzhixi 2015-01-08
  • 打赏
  • 举报
回复
class Integer: public Number<int>
{
      public:
 Integer(int i): Number<int>(i){}
};
勤奋的小游侠 2015-01-08
  • 打赏
  • 举报
回复
class Integer: public Number<int> { public: Integer(int val):Number(val){} }; 因为你没有定义接受一个参数的构造函数。 Integer的默认构造函数不接受参数。
demofere 2015-01-08
  • 打赏
  • 举报
回复
引用 1 楼 sdghchj 的回复:
Integer<int> i(5);
不行,编译错误,Integer已经继承 Number<int>了
sdghchj 2015-01-08
  • 打赏
  • 举报
回复
Integer<int> i(5);

64,649

社区成员

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

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