這是我第一次嘗試使用類模板(我很新C++)如何解決此類模板錯誤?
我試圖創建一個非常簡單的Number
類。首先,我要創建一個ToString
方法。截至目前,爲了測試目的,我只想ToString
返回字符串"testing"
。
當我運行我的代碼,我得到以下錯誤:
Undefined symbols for architecture x86_64: "Number<int>::ToString()", referenced from: _main in main.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [build/ml] Error 1
這裏是我的代碼,任何幫助表示讚賞:
的main.cpp
#include "number.h"
int main(int argc, char* argv[]) {
Number<int> x(15);
x.ToString();
return 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
number.cpp
#include "number.h"
template<class T>
std::string Number<T>::ToString() {
return std::string("testing");
}
不同於一般的代碼,你必須把模板完全在頭文件。 (這是一個簡化,但最簡單的解決方案) –
使'ToString'成爲一個const函數。你不需要用'std :: string'包圍引號 –