C++ 如何修复此类模板错误?
这是我第一次尝试使用类模板(我对C++非常陌生) 我试图创建一个非常简单的C++ 如何修复此类模板错误?,c++,class,templates,methods,C++,Class,Templates,Methods,这是我第一次尝试使用类模板(我对C++非常陌生) 我试图创建一个非常简单的Number类。首先,我创建了一个ToString方法。现在,出于测试目的,我只想ToString返回字符串“testing” 当我运行代码时,出现以下错误: 架构x86_64的未定义符号: “Number::ToString()”,引用自: _主音中的主音 ld:找不到架构x86_64的符号 叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用) 制造:**[build/ml]错误1 这是我的代码,感谢您的帮助:
Number
类。首先,我创建了一个ToString
方法。现在,出于测试目的,我只想ToString
返回字符串“testing”
当我运行代码时,出现以下错误:
架构x86_64的未定义符号:
“Number::ToString()”,引用自:
_主音中的主音
ld:找不到架构x86_64的符号
叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用)
制造:**[build/ml]错误1
这是我的代码,感谢您的帮助:
main.cpp
#include "number.h"
int main(int argc, char* argv[]) {
Number<int> x(15);
x.ToString();
return 0;
}
#包括“number.h”
int main(int argc,char*argv[]){
数字x(15);
x、 ToString();
返回0;
}
编号:h
#ifndef _NUMBER_
#define _NUMBER_
#include <iostream>
template <class T>
class Number {
private:
T m_val;
public:
Number(T val) : m_val(val) {};
std::string ToString();
};
#endif
\ifndef\u编号_
#定义\u编号_
#包括
模板
班号{
私人:
T m_val;
公众:
数字(T val):m_val(val){};
std::string ToString();
};
#恩迪夫
编号.cpp
#include "number.h"
template<class T>
std::string Number<T>::ToString() {
return std::string("testing");
}
#包括“number.h”
模板
std::string Number::ToString(){
返回标准::字符串(“测试”);
}
尝试在main.cpp
中包含number.cpp
(作为临时解决办法),而不是包含number.h
。或者将ToString()
的函数定义移动到number.h
,并且只使用number.h
请参见与普通代码不同,您必须将模板完全放在头文件中。(这是一种简化,但也是最简单的解决方案)将
ToString
作为常量函数。您不需要用std::string
包围报价,您真的建议OP在另一个.cpp文件中包含一个.cpp文件吗?最后我把ToString的函数定义移到number.h中