[ igac @ 28.01.2005. 15:01 ] @
Code:

#include <iostream>
#include <fstream>

using namespace std;

class A {
    private:
    int i;
    public:
    A(int a) { i=a; }
    void print() { cout << i << endl; }
};
int main() {
    A a(5);
    a.print();
    
    ofstream mrs("a.txt",ios::app);
    //mrs << a.print();
    return 0;
}

prost code koji mi pravi probleme :)
zasto ne mogu upisati u fajl a.txt ono sto dobijem preko a.print()?
kada preklopim operator << onda mogu npr "mrs << a;" ali opet ne mogu iskoristiti fju print() da upisem njen izlaz u taj fajl (mogu znaci poslije preklapanja da upisem sam int i u fajl ali ne mogu iskorititi ono cout-ovanje iz print() da upisem u fajl...)
[ filmil @ 28.01.2005. 15:29 ] @
Citat:
zasto ne mogu upisati u fajl a.txt ono sto dobijem preko a.print()?
kada preklopim operator onda mogu npr "mrs a;" ali opet ne mogu iskoristiti fju print() da upisem njen izlaz u taj fajl (mogu znaci poslije preklapanja da upisem sam int i u fajl ali ne mogu iskorititi ono cout-ovanje iz print()
Funkcija print() radi baš ono što si joj rekao: ispisuje sadržaj promenljive i na standardni izlaz (cout) i zatim vrati void.

U
Code:
 liniji:
 
 mrs  a.print();
 

ti tražiš da ti program ispiše tip void u datoteku mrs:

Code:
mrs  void;
 

Sumnjam da je to dozvoljeno.

f
[ filmil @ 28.01.2005. 15:36 ] @
Uzgred, ako dobro vidim, preklapanje operatora za izlaz radi ono što bi želeo. Zato koristi operator za izlaz.

f
[ idb @ 28.01.2005. 15:38 ] @
Ovako vec moze:
Code:
#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

class A {
    private:
    int i;
    public:
    A(int a) { i=a; }
    void print() { cout << i << endl; }
    string print1() {
        ostringstream oss;
        oss << i << endl; 
        return oss.str();
    };
};
int main() {
    A a(5);
    a.print();
    
    ofstream mrs("a.txt",ios::app);
    mrs << a.print1();
    return 0;
}

print1() vraca string kojeg sada mozes poslati u fajl.
[ igac @ 28.01.2005. 18:01 ] @
e hvala :) tako sam nesto i uradio... posto imam nasljedjivanje pa se redefinise fja print() (u osnovnoj klasi je virtual...) pa sam preklopio "<<" u obe klase i radi posao... hvala ipak:)
[ Bratstvo Jedinstvo @ 29.01.2005. 07:41 ] @
I ja sam imao istih probelma pa sam od skora uveo jedan princip koji sam procitao negde u nekoj knjizi. Uvek pravim metode za pristup privatnim tipovima.
Npr. banalan primer klasa datum

Code:

class datum
{
int dan,mesec,godina;
public:
void setdatum(int d,int m, int g) {dan=d;mesec=m;godina=g;}
int getdan() {return(dan);}
//i ovako za mesec i god
...


ovo savetujem svima jer se na ovaj nacin najlakse isputuju uslovi za ispravan unos i u drugim delovima programa se najlakse dobijaju vrednosti (npr. za upis, neko dalje racunanje itd...)

Pozdrav svima
[ igac @ 30.01.2005. 17:25 ] @
ma nije mi se dalo pisati toliko fja koje mi nisu bile bas neophodne... u osnovnoj klasi preklopio "<<" u izvedenom isto i sve radi kao sat :)