Не удалось найти ответ на мой вопрос, так что вот оно. Я создал класс с перегруженным >> оператором. Позже в коде у меня есть метод, который использует тот же код, поэтому я хотел использовать перегруженный оператор с этим указателем, но, похоже, это не так просто. Интересно, в чем проблема и как ее решить в элегантной форме.Использование перегруженного оператора ввода с помощью этого указателя
Код:
class Zadanie
{
int rozmiar;
vector<int> dane;
public:
Zadanie(int _rozmiar = 0)
{
rozmiar = _rozmiar;
dane.reserve(rozmiar);
}
int getRozmiar() { return rozmiar; }
void setRozmiar(int _rozmiar) { rozmiar = _rozmiar;}
friend istream & operator >> (istream & StrmWe, Zadanie & zadanie)
{
StrmWe >> zadanie.rozmiar;
for(int i = 0 ; i < zadanie.rozmiar; i++)
{
int tmp;
StrmWe >> tmp;
zadanie.dane.push_back(tmp);
}
return StrmWe;
}
void WczytajDaneZPliku()
{
const char* filepath = "data0.txt";
ifstream plik(filepath);
//plik.open(filepath, ios::in);
if(plik.good())
plik >> this;
plik.close();
}
};
Ошибка: не подходит для 'оператора >>' (типы операндов не являются 'станд :: ifstream {ака станд :: basic_ifstream}' и 'Zadanie * Const')
Я с нетерпением жду для кого-то, который откроет мне эту тайну.
Да, это ответ. Большое спасибо. – Treck