массивы — проблема с переопределением оператора + (c ++)

class Community
{
private:
char* Name;
char foundationDate[11];
Person founderPtr;
int maxMembersCount;
int membersCount;
Person* members;
static int communitiesCount;
public:

.
.
.
Person* operator+(Community&); // operator + prototype (must return array of members)
};

Person* Community::operator+(Community& other)
{
Community temp("temp","12.11.1993",other.getFounder());
Person* ptr;
for(int i = 0 ; i < this->getMembersCount() ; i++)
{
for(int j = 0 ; j < other.getMembersCount() ; j++)
{

if(strcmp(this->members[i].getEGN(),other.members[j].getEGN()) == 0)
{
temp.addMember(other.members[j]);
}
}
}
ptr = temp.getMembers();
return ptr;
}

Если я cout<< ptr[i]; в функции видно все ок, но когда пытаюсь:

 Community S("obshnost","12.11.2010",A);
Community R("community","11.10.2011",B);
S.addMember(C);
S.addMember(Z);
R.addMember(C);Person* ptr = S+R;
for(int i = 0 ; i<2 ; i ++)
{
cout<<ptr[i];
}

Я вижу испорченные результаты … Если у кого-то есть идея, что я должен искать, я буду благодарен 🙂

0

Решение

Я не могу сказать наверняка, не видя остальной части вашего исходного кода, но я предполагаю, что ваш оператор + возвращает указатель на память, которая уже была освобождена.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]