有問題I'm而編寫資源類:與模板成員函數的C++繼承類
class BaseResource {
protected:
unsigned int size;
public:
virtual ~BaseResource() {}
template<class T> const T& GetValue() const;
template<class T, class U> void GetValue(const U& rhs);
unsigned int GetSize() {
return this->size;
}
void SetSize(unsigned int size) {
this->size = size;
}
};
template<class T>
class Resource : public BaseResource {
T value;
public:
virtual ~Resource() {}
Resource(unsigned int size, const T& rhs) { this->size = size; this->value = rhs; }
const T& GetValue() const {return value;}
void SetValue(const T& rhs) {value=rhs;}
};
我覺得上面的類正確定義,所以我 不明白爲什麼下面的代碼生成一個鏈接錯誤:
Test.obj:錯誤LNK2001:無法解析的外部符號 「」 市民:char * const的& __thiscall BaseResource ::的GetValue(無效)常量 「(?? $ @的GetValue PAD @ BaseResource @@ QBEABQADXZ)」。
char* c = new char[3];
c[0] = '1';
c[1] = '2';
c[2] = '3';
BaseResource* resource = new Resource<char*>(3, c);
char* loadedResource = resource->GetValue<char*>();
在我看來,這應該創建一個資源的實例持有一個char *並可以返回它。
有人可以告訴我,我在哪裏做了這個錯誤嗎?
嗯好吧,這似乎合乎邏輯。 那麼你能明確告訴我如何解決所示情況的問題嗎? – Xenogenesis