我在重载'<<<'时遇到问题c ++中动态分配的Table类的运算符。
这是头文件:
#ifndef INT_TABLE_H
#define INT_TABLE_H
#include<cstdlib>
#include<iostream>
class Table {
public:
Table();
Table(int n);
Table(const Table& orig);
virtual ~Table();
friend std::ostream& operator<<(std::ostream& out, const Table& t);
private:
int** table;
int rows;
int cols;
};
#endif /* INT_TABLE_H */
这是有问题的功能:
std::ostream& operator<<(std::ostream& out, const Table& t)
{
for(int i=0;i<t.rows;i++)
{
for(int j=0; j<t.cols; j++)
{
std::cout<<"["<<"."<<"]";
}
std::cout<<std::endl;
}
}
当我运行代码时,我得到以下输出:
1 [main] algproject1 6360 cygwin_exception::open_stackdumpfile: Dumping stack trace to algproject1.exe.stackdump
this is a table
[.][.][.][.][.]
[.][.][.][.][.]
[.][.][.][.][.]
[.][.][.][.][.]
[.][.][.][.][.]
RUN FAILED (exit value 35,584, total time: 1s)
表仍然打印,但我收到上述错误。 我发现当我用一个数字(例如5)替换t.rows和t.cols时,它运行正常没有问题。有谁知道问题是什么?动态内存分配对我来说是一个相对较新的概念。
另一个快速问题,我如何访问表格的元素进行打印?当我替换“。”使用t [0] [0],我收到以下错误:
int_table.cpp: In function 'std::ostream& operator<<(std::ostream&, const Table&)':
int_table.cpp:50:34: error: no match for 'operator[]' (operand types are 'const Table' and 'int')
std::cout<<"["<<t[0][0]<<"]";
^
非常感谢您提供的任何帮助或解释!
答案 0 :(得分:1)
对于任何想知道的人,我都找到了问题。
在运营商&lt;&lt;函数我无法实际返回输出流 退出;
我应该看到一个简单的解决方案,但感谢输入!