這個問題在這里已經有了答案: 使用類模板需要模板引數串列 2 個回答 9 小時前關閉。
我的頭檔案中有一個抽象類:
template <class T>
class IRepository {
public:
virtual bool SaveData(Result<T> &r) = 0;
//virtual Result<T> & GetData()const = 0;
virtual ~IRepository() {}
};
我在頭檔案本身中繼承它:
template <class T>
class Repo1 :public IRepository<T>
{
public:
bool SaveData(Result<T> &r)override;
//Result<T> & GetData() const override;
private:
std::mutex mx;
std::queue<T> m_q;
};
我正在嘗試SaveData在 cpp 檔案中定義:
template <class T>
bool Repo1::SaveData(Result<T> &r)
{
std::lock_guard<std::mutex> lock(mx);
if (m_q.size() > 10)
{
m_q.pop();
}
m_q.push(r);
return true;
}
編譯器抱怨: 'twsensors::Repo1':使用類模板需要模板引數串列
編譯器不會抱怨以下內容:
template <class T>
bool SaveData(Result<T> &r)
{
std::lock_guard<std::mutex> lock(mx);
if (m_q.size() > 10)
{
m_q.pop();
}
m_q.push(r);
return true;
}
這樣做的問題是,如果我 create class Repo2 :public IRepository<T>,那么它們的Save方法都會指向相同的定義。
編譯錯誤背后的原因是什么?
uj5u.com熱心網友回復:
在類定義之外實作模板類方法時,模板類需要模板引數:
template <class T>
bool Repo1<T>::SaveData(Result<T> &r)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/472991.html
上一篇:帶有jpg的IMG_Load()回傳“不支持的影像格式”
下一篇:將右值傳遞給函式
