这已经让我疯狂了一个半小时。我知道这是一个小问题,但找不到问题出在哪里(当然,下雨的星期五下午并没有帮助)。
我定义了以下类来保存从文件中读取的配置参数,并允许我从程序中访问它们:
我定义了以下类来保存从文件中读取的配置参数,并允许我从程序中访问它们:
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()
也是同样的情况。
我查看了很多模板教程,但是仍然无法解决。有任何想法吗?