ВУЗ:
Составители:
Рубрика:
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
определении таких функций для шаблона класса неясен тип объекта,
который следует ввести или вывести. Этот тип зависит от типа данных,
для которого формируется объект на основе шаблона класса. Поэтому
дружественные функции ввода/вывода также должны быть шаблонными
и это должно быть указано при их объявлении в шаблоне класса:
class QMatrix
{
. . .
template <class T>
friend istream& operator >>
(istream& is, QMatrix<T>& ob);
template <class T>
ostream& operator << (ostream& os, QMatrix<T>& ob);
. . .
};
// шаблон операции ввода квадратной матрицы
template <class T>
istream& operator >> (istream& in, QMatrix<T>& ob)
{
if(ob.n != 0)
{
for(int i = 0; i < ob.n; i++)
for(int j = 0;j < ob.n; j++)
in >> ob[i][j];
}
return in;
}
// шаблон операции вывода квадратной матрицы
template <class T>
ostream& operator << (ostream& out, QMatrix<T>& ob)
{
if(ob.n != 0)
{
out << "Матрица:" << endl;
for(int i = 0; i < ob.n; i++)
{
for(int j = 0; j < ob.n; j++)
out << ob[i][j] << "\t";
out << endl;
}
}
else
out << "Матрица пуста" << endl;
return out;
}
118
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
определении таких функций для шаблона класса неясен тип объекта,
который следует ввести или вывести. Этот тип зависит от типа данных,
для которого формируется объект на основе шаблона класса. Поэтому
дружественные функции ввода/вывода также должны быть шаблонными
и это должно быть указано при их объявлении в шаблоне класса:
class QMatrix
{
. . .
template
friend istream& operator >>
(istream& is, QMatrix& ob);
template
ostream& operator << (ostream& os, QMatrix& ob);
. . .
};
// шаблон операции ввода квадратной матрицы
template
istream& operator >> (istream& in, QMatrix& ob)
{
if(ob.n != 0)
{
for(int i = 0; i < ob.n; i++)
for(int j = 0;j < ob.n; j++)
in >> ob[i][j];
}
return in;
}
// шаблон операции вывода квадратной матрицы
template
ostream& operator << (ostream& out, QMatrix& ob)
{
if(ob.n != 0)
{
out << "Матрица:" << endl;
for(int i = 0; i < ob.n; i++)
{
for(int j = 0; j < ob.n; j++)
out << ob[i][j] << "\t";
out << endl;
}
}
else
out << "Матрица пуста" << endl;
return out;
}
118
Страницы
- « первая
- ‹ предыдущая
- …
- 116
- 117
- 118
- 119
- 120
- …
- следующая ›
- последняя »
