C++ 模板中重载的ostream运算符
我对重载ostream操作符感到困惑,这是因为您在C++ 模板中重载的ostream运算符,c++,templates,std,C++,Templates,Std,我对重载ostream操作符感到困惑,这是因为您在sparseArray2D上重载(而不是重新加载),但这不是matrX的含义: sparseArray2D<int> *matrX = new sparseArray2D<int>(10, 9, 5); // ^^ cout << matrX; 注意:指针不是对象(C++),为什么不sparseArray2D matrX(10,9,5)@Neil Kirk,你说得对!谢谢是的,没
sparseArray2D
上重载(而不是重新加载),但这不是matrX
的含义:
sparseArray2D<int> *matrX = new sparseArray2D<int>(10, 9, 5);
// ^^
cout << matrX;
注意:指针不是对象(C++),为什么不
sparseArray2D matrX(10,9,5)代码>@Neil Kirk,你说得对!谢谢是的,没错。现在我明白它是如何工作的了。非常感谢。最有可能的是,OP根本不需要指针。仍然存在friend
声明与定义不匹配的问题。不完全理解您的意思mean@Archarious,创建一个简单的对象,根本不需要指针(Neil Kirk在另一篇评论中给出了另一种选择)。您对operator@chris好的,我明白了!感谢您的解释和文章!
#include "sparseArray2D.h"
int _tmain(int argc, _TCHAR* argv[])
{
//...
sparseArray2D<int> *matrX = new sparseArray2D<int>(10, 9, 5);
cout << matrX;
//...
}
sparseArray2D<int> *matrX = new sparseArray2D<int>(10, 9, 5);
// ^^
cout << matrX;
cout << *matrX;