Možná mi něco uniklo že jsem nepochopil co v tom článku po mě chtějí, co tam mám zadat.
http://www.builder.cz/rubriky/c/c--/pretezovani-operatoru-lt-lt-a-gt-gt-pro-datove-proudy-v-c--155741czPíše jen: "Opět změníme funkci main v předchozím příkladu:"
Dále už žádné další vysvětlení

Můj kód je rozdělen na hlavičkový soubor:
#include "stdafx.h"
class MyClass
{
private:
int A,B;
public:
int getA() { return A; }
int getB() { return B; }
void setA(int a) { A = a; }
void setB(int b) {B = b; }
friend std::ostream& operator << (std::ostream &os, MyClass &objekt);
friend std::istream& operator >> (std::istream &is, MyClass &objekt);
};
std::istream& operator >> (std::istream &is, MyClass &objekt)
{
int cislo;
is >> cislo; // Využiji již přetížených operátorů pro primitivní datové typy
objekt.setA(cislo);
is >> cislo;
objekt.setB(cislo);
return is; // Nezapomeňte na tuto drobnost! Jinak nebudete moc dávat operátory za sebe
}
std::ostream& operator << (std::ostream &os, MyClass &objekt)
{
return (os << objekt.A << objekt.B); // Krátké, že?
}
a soubor cpp:
#include "stdafx.h"
#include "MyClass.h"
using namespace std; // using istream and ostream
int main(void)
{
MyClass m;
cout << "Cekam objekt" << endl;
cin >> m;
if (!cin)
{
cerr << "Objekt nenacten! " << endl;
}
else
{
ofstream f("data.txt");
if (!f)
{
cerr << "Nelze otevrit data.txt" << endl;
return -1;
}
f << "Objekt byl:" << endl << m;
cout << "Objekt byl:" << endl << m;
}
getch();
return 0;
}
Tážu se tedy, chápete někdo co po mě chtějí?
Za druhé, pomohli byste to upravit tak, abych mohl funkci
friend std::istream& operator >> (std::istream &is, MyClass &objekt);
využívat podobně jako
friend std::ostream& operator << (std::ostream &os, MyClass &objekt);
tedy abych mohl nejdříve zadat název souboru, poté nějaké data, pak se to uloží a dále se to načte a vypíše co jsem tam napsal.
V prvním příkladu se řešil jen výstup pomocí jednoho řádku:
cout << "Adresa objektu je:" << endl << m;
pro který existovala třída
ostream& operator << (ostream &os, MyClass &objekt)
{ friend ostream& operator << (ostream &os, MyClass &objekt); }
Chtěl bych tedy vyzkoušet toto elegantní řešení i pro vstup. Vešlo by se to na jeden řádek,
když bych chtěl zadat nejdříve jméno souboru, a po potvrzení ještě zadat data pro vstup?
Případně naopak, nejdříve zadat data pro soubor, a pak ho pojmenovat?
Myslím, ale že by to na jeden řádek nešlo, protože by to vlastně byly dvě různé funkce.
Tak nejdříve zadat to jméno a pak to pomoci přetypovaného operátoru uložit do souboru?