我在我的模板“Wallet”類中宣告兩個 void 函式時遇到問題,它們將洗掉現有模板類“CreditCard”并將其添加到向量中。編譯器寫道“宣告不兼容”
#pragma once
#include<iostream>
#include<string>
#include"CreditCard.h"
#include<vector>
using namespace std;
template<class T>
class Wallet
{
protected:
vector<CreditCard<T>>cards;
public:
Wallet(vector<CreditCard<T>>cards);
void addCreditCard(const CreditCard card);
void removeCreditCard(const CreditCard card);
};
template<class T>
Wallet<T>::Wallet(vector<CreditCard<T>>cards) {
}
template<class T>
void Wallet<T>::addCreditCard(const CreditCard card) {
}
template<class T>
void Wallet<T>::removeCreditCard(const CreditCard card) {
}
uj5u.com熱心網友回復:
問題是這是CreditCard一個與class-type不同的類模板。所以我們必須指定模板引數串列以使其成為一個型別。
要解決此問題,您可以指定模板引數,CreditCard如下所示:
template<class T>
class Wallet
{
protected:
vector<CreditCard<T>>cards;
public:
Wallet(vector<CreditCard<T>>cards);
//-------------------------------------vvv------------>specify template argument explicitly
void addCreditCard(const CreditCard<T> card);
//----------------------------------------vvv------------>specify template argument explicitly
void removeCreditCard(const CreditCard<T> card);
};
template<class T>
//--------------------------------------------vvv---------->specify template argument
void Wallet<T>::addCreditCard(const CreditCard<T> card) {
}
template<class T>
//-----------------------------------------------vvv---------->specify template argument
void Wallet<T>::removeCreditCard(const CreditCard<T> card) {
}
演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/481952.html
上一篇:用Java為學校建模
