Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

greska u operatoru+

[es] :: C/C++ programiranje :: greska u operatoru+

[ Pregleda: 2558 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milos Sreckovic
System administrator, SET d.o.o.
Šabac

Član broj: 30126
Poruke: 267
*.ptt.yu.

Sajt: www.set.rs


+2 Profil

icon greska u operatoru+26.08.2006. u 21:56 - pre 215 meseci
Znaci razbijam se vec pola dana i ne mogu da provalim sta gresim

Code:

#include <fstream.h>
#include <iostream.h>

class string
{
public:
    char *a;
    int size;
    
    string()
    {
        //int i;
        size=0;
        a=(char*)malloc(sizeof(char)*0);
        
    }
    
    string(const string& x)
    {
        int i;
        size=x.size;
        a=(char*)malloc(sizeof(char)*size);
        for(i=0;i<size;i++) a[i]=x.a[i];
    }
    
    ~string()
    {
        free(a);
    }
    
    string operator = (string& x)
    {
        int i;
        size=x.size;
        a=(char*)realloc(a,sizeof(char)*size);
        
        for(i=0; i<size; i++) a[i]=x.a[i]; 
        return (*this);
    }

    string operator+=(const char& y)
    {
        string s;
        int i;
        s.a=(char*)realloc(s.a,sizeof(char)*(size+1));
        for(i=0;i<size;i++) s.a[i]=a[i];
        s.a[size]=y;
        s.size=size+1;
        return s; 
    }
    
    
    string operator+(const char& x)
    {
        string s(*this);
        
        s+=x;
        
        return s;
        
    }
    
    

int main()
{
    char ak='a';
    string sql,sql2;
//    sql=sql2+='a';
    sql=sql2+ak;
    //sql2='b';
    //sql='a';
    return 0;
}



i izbacuje mi gresku u main

Code:

string.cpp: In function `int main()':
string.cpp:70: error: no match for 'operator=' in 'sql =
   string::operator+(const char&)((&ak))'
string.cpp:32: error: candidates are: string string::operator=(string&)



Davno sam pisao operatore a ovo mi sad hitno treba a razbijam se ne mogu da provalim gresku jer je verovatno previse ocigledna
 
Odgovor na temu

Milos Sreckovic
System administrator, SET d.o.o.
Šabac

Član broj: 30126
Poruke: 267
*.ptt.yu.

Sajt: www.set.rs


+2 Profil

icon Re: greska u operatoru+26.08.2006. u 22:13 - pre 215 meseci
pronasao sam sta je

umesto
Code:

string operator+(const char& x)

stavite
Code:

string& operator+(const char& x)

i radi, ali mi sad vraca
Code:

string.cpp: In member function `string& string::operator+(const char&)':
string.cpp:63: warning: reference to local variable `s' returned


ali zasto???
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
*.ptt.yu.

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: greska u operatoru+26.08.2006. u 22:43 - pre 215 meseci
Zapravo greška je u vezi sa operator=... nije napravljen jedan za tip char.

- Recimo da se klasa zove mystring umesto string.
- Nije loše imati i mystring(const char*) ili mystring(const char*,int)
- operator= obično vraća referencu na aktuelni objekat a referenca koju prima je obično const; mystring& operator=(const mystring& x). Isto važi i za operator+= koji bi ti malo izmenio

Code:
 mystring& operator+=(const char& y)
    {
        a = (char*) realloc(a,(size+1)*sizeof(char));
        a[size++] = y;
        return (*this);
    }

Nakon ovoga bi ti operator + radio. Naravno, nemoj iz njega vraćati prema referenci nego prema vrednosti.

Code:
mystring operator+(const char&);


Postoji i klasa string...

Code:
#include <string>
// ...

Ipak se ++uje.
 
Odgovor na temu

[es] :: C/C++ programiranje :: greska u operatoru+

[ Pregleda: 2558 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.