如何可以聲明一個模板類(組分的文庫),其將採取包含組件作爲一個參數的向量的模板容器模板類? 下面是代碼一個精簡版作爲一個例子:如何創建具有不同的對象作爲參數
// In Library.h
using namespace std;
template<typename T,
template <typename, typename = std:allocator<T>> class Container>
class library {
Container<T> comp_lib;
library(Container<T> &Vc) {comp_lib = Vc}
};
// In mainProgram.cpp
#include "Library.h"
// Other includes...
using namespace std;
int main() {
library<int, vector> intLib;
return(0);
}
正如我所提到之前這意味着是一個組件庫。因此,庫模板不是保存含整數的矢量,而是保存包含通用組件的矢量,包含電阻的矢量,包含電容的矢量和包含電感的矢量。電阻器,電容器和電感器都是來自組件基類的派生類。
當運行的代碼,它不編譯和我收到這些錯誤消息:
C2079:「intLib」使用未定義類「圖書館」上線[庫intLib]在mainProgram.cpp
C3855「圖書館」:模板參數「C」是用線申報 [}不相容; ]在library.h(最後一行)
C3855「圖書館」:模板參數「載體」是用線的聲明[}不相容;在library.h(也,最後一行)
我已經看了很多不同物品的關於模板模板參數,這個答案已經非常有用,到目前爲止,儘管它似乎並沒有解決我問題米目前具有: Template class with template container
期望的結果是,能夠寫的語句,例如:使用相同的模板
library<resistor, vector<resistor>> resistor_lib;
library<capacitor, vector<capacitor>> capacitor_lib;
library<inductor, vector<inductor>> inductor_lib;
library<component, vector<component>> component_lib;
在主所有
。
感謝,任何幫助深表感謝
您沒有默認的構造函數,也不是你有一個公共的構造的。 – Incomputable
是的,道歉,忘了添加構造函數的例子。這只是一小段代碼,試圖說明問題而不太複雜。原代碼確實有公共的默認和參數化的構造函數,仍然不能編譯 –