| Код | #include "stdafx.h" #include <iostream> using namespace std;
class aaa{ public: char* name; friend aaa operator+(aaa op1, aaa op2); aaa(int); aaa(); }; aaa::aaa(int i) { aaa::name = new char[10]; cout << "\nname?"; cin >> name; } aaa::aaa() { aaa::name = new char[10]; } aaa operator+(aaa op1, aaa op2) { char* tmp=new char[10]; strcpy(tmp, op1.name); strcat(tmp,"+"); strcat(tmp, op2.name); aaa temp; temp.name=tmp; return temp; }
int _tmain(int argc, _TCHAR* argv[]) { aaa t1(1); aaa t2(2); aaa t3; t3=t1+t2; cout << t3.name;
//aaa* t1 = new aaa(1); //aaa* t2 = new aaa(1); //aaa* t3 = new aaa; //t3=t1+t2; //cout << t3->name;
return 0; }
|
Эта программка работает, но мне нужно чтобы работал закомментированный кусок:
| Код | aaa* t1 = new aaa(1); aaa* t2 = new aaa(1); aaa* t3 = new aaa; t3=t1+t2; cout << t3->name;
|
т.е. задача задать 2 объекта в динамической памяти, а третий получить сложением первых двух.
при раскомментировании второго куска и закомментировании первого:
| Код | // testaaaa.cpp: определяет точку входа для консольного приложения. //
#include "stdafx.h" #include <iostream> using namespace std;
class aaa{ public: char* name; friend aaa operator+(aaa op1, aaa op2); aaa(int); aaa(); }; aaa::aaa(int i) { aaa::name = new char[10]; cout << "\nname?"; cin >> name; } aaa::aaa() { aaa::name = new char[10]; } aaa operator+(aaa op1, aaa op2) { char* tmp=new char[10]; strcpy(tmp, op1.name); strcat(tmp,"+"); strcat(tmp, op2.name); aaa temp; temp.name=tmp; return temp; }
int _tmain(int argc, _TCHAR* argv[]) { //aaa t1(1); //aaa t2(2); //aaa t3; //t3=t1+t2; //cout << t3.name;
aaa* t1 = new aaa(1); aaa* t2 = new aaa(1); aaa* t3 = new aaa; t3=t1+t2; cout << t3->name;
return 0; }
|
выскакивает ошибка error C2110: +: невозможно добавить два указателя Помогите плз, не могу разобраться с этим механизмом.
|