0
即時嘗試編寫C++優先級隊列實現。嘗試超載時的問題<<運算符在C++中11
這是類優先級隊列元素:
template <class Priority, class T>
class PriorityQueueElement {
public:
Priority priority;
T* data;
private:
PriorityQueueElement* next ;
public:
PriorityQueueElement(const Priority& priority,T data) :
priority(priority) ,data(&data) , next(NULL){
}
// ... other functions .. //
template <class P, class Y>
friend ostream& operator<<(ostream& os ,const PriorityQueueElement<P,Y>& element);
};
和功能:
template<class Priority, class T>
ostream& operator<<(ostream& os ,const PriorityQueueElement<Priority,T>& elemen){
return os << "[" << elemen.getPriority() << "," << elemen.getData() << "]";
}
即時得到錯誤:
Multiple markers at this line
- template argument deduction/substitution failed:
- template<class Priority, class T> std::ostream& mtm::operator<<(std::ostream&, const
mtm::PriorityQueueElement<Priority, T>&)
Multiple markers at this line
- required from 'std::ostream& mtm::operator<<(std::ostream&, const mtm::PriorityQueueElement<Priority, T>&) [with Priority = int; T = int; std::ostream =
std::basic_ostream<char>]'
- required from 'std::ostream& mtm::operator<<(std::ostream&, const mtm::PriorityQueueElement<Priority, T>&) [with Priority = double; T = Student;
std::ostream = std::basic_ostream<char>]'
,如果我嘗試使用:
template <class Priority,class T>
我得到一個有關在類本身的陰影模板的錯誤
感謝您的幫助!
你能provid e是一個最小的完整示例,因此我們可以重現該問題? – dyp
您的構造函數正在傳遞值參數的地址並將其存儲在類成員中。那很糟。 –