Вот классКак перегрузить оператор << для печати члена класса?
class graph {
public:
graph() {}; // constructor
graph(int size);
friend ostream& operator<< (ostream& out, graph g);
private:
int size;
bool** grph;
};
Это, как я генерировать график:
graph::graph(int size) {
grph = new bool*[size];
for (int i = 0; i < size; ++i)
grph[i] = new bool[size];
for (int i = 0; i < size; ++i)
for (int j = i; j < size; ++j) {
if (i == j)
grph[i][j] = false;
else {
cout << prob() << endl;//marker
grph[i][j] = grph[j][i] = (prob() < 0.19);
cout << grph[i][j] << endl;//marker
}
}
cout << "Graph created" << endl;//marker
}
Конструктор и Проб() функция работала просто отлично. Я проверил их с помощью маркеров.
Здесь я считаю, что проблема существует. Это код для перегруженного оператора < <
ostream& operator<< (ostream& out, graph g) {
for (int i = 0; i < g.size; ++i) {
for (int j = 0; j < g.size; ++j)
out << g.grph[i][j] << "\t";
out << endl;
}
return out;
}
Вот как это называется.
graph g(5);
cout << g << endl;
Теперь программа компилируется просто отлично. Но, пока выполнение, график не печатается. Я не смог распечатать график таким же образом, не перегружая оператора, но используя цикл for внутри основного или с помощью функции члена класса.
Может ли кто-нибудь помочь мне? Я использую Visual Studio 2015
Этот класс также потребуется перегрузить некоторые функции для размещения копирования. Этот пост должен быть полезен: https://stackoverflow.com/questions/4172722/what-is-the-rule-of-three – Galik