尝试在 C++11 中重载<<运算符时出现的问题
problems when trying to overload << operator in c++11
我试图写一个c++优先级队列实现。
这是优先队列元素的类:
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>
我得到一个关于在类本身中遮蔽模板的错误
谢谢你的帮助!
我复制了你的代码并修改了一点(用于测试)
template<class Priority, class T>
ostream& operator<<(ostream& os, const PriorityQueueElement<Priority, T>& elemen)
{
return os << "[" << elemen.priority << "," << *elemen.data << "]";
}
在main中输入:
PriorityQueueElement<int, const char*> x( 1, "fsdfsdfsd" );
cout << x;
,它给我输出:[1,fsdfsdfsd]
在visual studio 2013上测试。问题可能出在别的地方
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 呼叫运营商<<临时
- 基于boost的程序的静态链接——zlib问题