問題是如何從繼承的模板類調用基礎構造函數。我想創建一個FixedQueue並在std :: queue中重載一些函數。因此std:queue是基類。關鍵字using,自C++ 11以來,可以用來調用基礎,如果這是一個專門化的類,它可以工作,但我無法使用模板類來處理它。調用基礎默認構造函數模板類
此外,我試圖使用舊的c + +標準,我只是簡單地調用std :: queue中定義的構造函數。但它不起作用。
.h文件
#ifndef _HEADER_FIXED_QUEUE_
#define _HEADER_FIXED_QUEUE_
#include <queue>
#include <iostream>
template<class T>
class FixedQueue : public std::queue<T>
{
//using queue<T>::queue<T>;
public:
FixedQueue();
FixedQueue(const T &initial_var);
void foo() { std::cout << "inside\n"; }
};
#endif
CPP文件
#include "FixedQueue.h"
template<typename T>
FixedQueue<T>::FixedQueue()
:
std::queue<T>()
{
std::cout << "Default Constructor FixedQueue\n";
}
template<typename T>
FixedQueue<T>::FixedQueue(const T &initial_var)
:
std::queue<T>(initial_var)
{
std::cout << "Specialized Constructor FixedQueue\n";
}
主要文件。
#include <iostream>
#include "FixedQueue.h"
int main()
{
FixedQueue<int> d_frameSlices;
std::cout << "I want to do something with my queue\n";
}
問題是這樣的。如何將構造函數鏈接到基類std :: queue中定義的構造函數。模板的東西正在殺死我。
這是我從clang獲得的錯誤消息,它是通常未定義的參考。
Undefined symbols for architecture x86_64:
"FixedQueue<int>::FixedQueue()", referenced from:
_main in main-lqoFSA.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
如果有人知道如何與「使用」或舊的方式方法,我很高興與這兩個做到這一點。在此先感謝
您使用的鐺鐺或++? –
類模板*(區分有助於概念化模板_are_以及它們如何工作) –
我不明白這與'使用'有什麼關係。你把你的函數定義放在錯誤的地方。漂亮的標準模板錯誤? –