[英]How can I solve this problem with chain inheritance c++?
基本上我正在我的大學里研究Chain Inheritance,我希望用這個來構建一個程序,我遇到的問題是這部分:
template <class NUM_TYPE>
class FilterPositiveNumber: public Filtro<NUM_TYPE> {
bool dadoValido(NUM_TYPE& d) const override {
// TODO: Implemente este metodo.
if (d > 0){
return true;
}else{
return false;
}
}
};
class FilterNaturalString: public Filtro<std::string> {
bool dadoValido(std::string& d) const override {
std::string::const_iterator it = d.begin();
while (it != d.end() && std::isdigit(*it)) ++it;
return !d.empty() && it == d.end();
}
};
void convert2int(std::vector<std::string>& in, std::vector<int>& out) {
Filtro<std::string>* new_check;
new_check = new FilterNaturalString;
for(std::string i : in){
if(new_check->dadoValido(i)){
out.push_back(stoi(i));
}
}
}
template <class NUM_TYPE> void test_filter_square_roots() {
std::vector<unsigned> entrada;
std::vector<unsigned> saida;
read_input(entrada);
Filtro<int>* new_check;
new_check = new FilterPositiveNumber;
}
我收到這個錯誤
error: invalid use of template-name ‘FilterPositiveNumber’ without an argument list
new_check = new FilterPositiveNumber;
我不明白為什么我在第二次嘗試實例化“Filtro”時遇到錯誤,如果我在對 FilterNaturalString 執行它時以完全相同的方式調用它。
template <class NUM_TYPE>
class FilterPositiveNumber: public Filtro<NUM_TYPE>
{
...
};
定義了一個 class 模板,一個潛在的類族的藍圖。 要使用它,您必須告訴編譯器,或者編譯器必須能夠推斷,模板要專門用於什么類型才能成為 class。
class FilterNaturalString: public Filtro<std::string>
{
...
};
定義了一個 class。
所以
new_check = new FilterNaturalString;
有效但
new_check = new FilterPositiveNumber<int>;
需要允許編譯器填充空白並創建可以從模板實例化的 class。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.