免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1565 | 回复: 5
打印 上一主题 下一主题

类模板定义编译出错,请高手帮忙! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-12 13:09 |只看该作者 |倒序浏览
main函数里实例SettingValue <int> sv;时提示
undefined reference to `Envpro::ServerConfig::SettingValue <int>::SettingValue()'

调用sv.setValue( 98 );时提示
undefined reference to `Envpro::ServerConfig::SettingValue <int>::setValue(int)'

各位帮看下什么原因。
代码如下:

/***SettingValue.h***/
#ifndef SETTINGVALUE_H_
#define SETTINGVALUE_H_

namespace Envpro{ namespace ServerConfig{

template <class T> class SettingValue
{
public:
T getValue();
void setValue(T val);
bool isChanged();

SettingValue();
SettingValue(T val);
virtual ~SettingValue();

private:
T m_value;
bool m_bChanged;
};

}}

#endif /*SETTINGVALUE_H_*/

/***SettingValue.cpp***/
#include "SettingValue.h"

using Envpro::ServerConfig::SettingValue;

template <class T> SettingValue <T>::SettingValue()
: m_bChanged(false)
{
}

template <class T> SettingValue <T>::SettingValue(T val)
: m_bChanged(false), m_value(val)
{

}

template <class T> SettingValue <T>::~SettingValue()
{
}

template <class T> T SettingValue <T>::getValue()
{
return m_value;
}

template <class T> void SettingValue <T>::setValue(T val)
{
m_value = val;
m_bChanged = true;
}

template <class T> bool SettingValue <T>::isChanged()
{
return m_bChanged;
}

/***mainapp.cpp***/
#include "SettingValue.h"

#include <stdio.h>

using Envpro::ServerConfig::SettingValue;

int main()
{
SettingValue <int> sv;
sv.setValue( 98 );
printf("SettingValue:%d", sv.getValue());

return 0;
}

[ 本帖最后由 speeder 于 2009-3-12 13:10 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-03-12 13:21 |只看该作者
将模板cpp的代码,全部包在.h class中

论坛徽章:
0
3 [报告]
发表于 2009-03-12 13:25 |只看该作者
嘿嘿,这个错误估计大家都犯过

论坛徽章:
0
4 [报告]
发表于 2009-03-12 13:55 |只看该作者
多谢各位帮忙

顺便问下,这样逻辑放到h里,不是做不到代码隐藏了么。
为什么会这样设计。
迷惑而已不是主要问题。

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
5 [报告]
发表于 2009-03-12 14:06 |只看该作者

回复 #4 speeder 的帖子

这是模板。。跟普通函数的编译链接方式不同

论坛徽章:
0
6 [报告]
发表于 2009-03-12 14:12 |只看该作者
多谢 接受教育
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP