PDA

Показать полную графическую версию : глюки с _fastcall


jekazz
14-03-2005, 17:11
Создал класс, так, для тренеровки.
class string
{
char *data;
int size;
public:
string:string(const char *str="");
string& operator=(string&);
string& operator+=(string&);
string&operator+(string&);
//...................и т.д

~string();
};

Так вот, все работает, работает правильно, когда параметры передаются через стек. Но когда любую из функций или операторов сделать _fastcall начинаются глюки.
Например
string s1("1234");
string s2("5678");
string s3("abcd");
s1+=s2; //должно быть s1 = "12345678", а получается s2 = "56781234"

или еще круче:

s2+=s3;
s2=s1; //после этого s3 = "";

То же самое с функциями и с операторами, принимающими параметры int, const char*. В чем дело??? Без _fastcall все работает правильно!!!

pva
18-03-2005, 12:36
Как вы себе представляете действие оператора string& operator+(string&)?
По правилам c++ результат дейстаия вашего оператора уничтожается при на выходе и ссылка указывает в никуда.




© OSzone.net 2001-2012