У меня есть класс:C++ манипулятор
template<class T>
class matrix
{
private:
int COLS,ROWS;
public:
inline matrix(int r,int c){
this->COLS=r;
this->ROWS=c;
}
template<class T2>
friend ostream& info(ostream& os);
};
я пытался во многих способах реализации информации function.but никто не удастся.
я хочу использовать его в основной функции
Matrix<int> M(10,20);
cout<<info<<M;
я хочу из положить COLS Класс Matrix и информацию строк.
Я пробовал столько раз в реализации информации о классе друзей, но не смог.
любой может сказать мне, как это можно сделать?
Извините, я забыл поставить перегрузочную деталь < <.
template<class T2>
friend ostream& operator<< (ostream &out,matrix<T2> &cMatrix);
реализация:
template<class T2>
ostream & operator<<(ostream &out, matrix<T2> &cMatrix) {
out<<cMatrix.getCOLS();// sorry for didn't put the get function, it's not easy to put code line by line here.
out<<cMatrix.getROWS();
return out;
}
< < мой эксплуатации работ удовольствие.
но когда я хочу использовать информацию, я получил ошибки.
Я не уверен, как реализовать манипуляторы собственного типа в качестве функции друга. i google некоторые, но они не являются функцией друзей. а также, это своего рода шаблон .
вот что я Тринг:
template<class T2>
ostream& info(ostream& os,matrix<T2> &cMatrix)
{
int cols=cMatrix.getCOLS();
int rows=cMatrix.getROWS();
os<<rols<<"X"<<rows<<" matrix "<<endl;
return os;
}
Не забудьте правильно отпечатать свой исходный код. – Phong
Зачем вам нужен манипулятор? Свободная или членская функция будет намного проще. Другой альтернативой будет использование [прокси-класса] (http://stackoverflow.com/questions/535444/custom-manipulator-for-c-iostream). –
hostly, я tring, чтобы выполнить одно из моих заданий. Учитель позволяет нам практиковать манипулятор. Итак, он позволил мне реализовать это как необходимую функциональность. – robert