【发布时间】:2010-11-09 19:59:12
【问题描述】:
在过去的一个半小时里,这一直让我发疯。我知道这是一件小事,但找不到问题所在(当然,周五下午下雨,这无济于事)。
我已经定义了以下类,它将保存从文件中读取的配置参数,并允许我从我的程序中访问它们:
class VAConfig {
friend std::ostream& operator<<( std::ostream& lhs, const VAConfig& rhs);
private:
VAConfig();
static std::string configFilename;
static VAConfig* pConfigInstance;
static TiXmlDocument* pXmlDoc;
std::map<std::string, std::string> valueHash;
public:
static VAConfig* getInstance();
static void setConfigFileName( std::string& filename ) { configFilename = filename; }
virtual ~VAConfig();
void readParameterSet( std::string parameterGroupName );
template<typename T> T readParameter( const std::string parameterName );
template<typename T> T convert( const std::string& value );
};
方法convert()在VAConfig.cpp中定义为
template <typename T>
T VAConfig::convert( const std::string& value )
{
T t;
std::istringstream iss( value, std::istringstream::in );
iss >> t;
return t;
}
一切都很简单。但是当我使用
从我的主程序进行测试时int y = parameters->convert<int>("5");
我收到 undefined reference to 'int VAConfig::convert<int>...' 编译错误。 readParameter() 同上。
查看了很多模板教程,但无法弄清楚这一点。有什么想法吗?
【问题讨论】:
-
一个半小时还不错......昨天它杀死了我 3 个。
标签: c++ templates compilation linker