У меня есть список указателей того же класса внутри моего класса. но когда я хочу получить доступ к данным, я получаю сообщение об ошибке. Что я должен сделать, чтобы решить мою проблему. Я новичок на C++, и я не могу понять эту проблему.получение ошибки сегментации ошибок (core dumped) возвращено 139 (0x8B)
#include <iostream>
#include <list>
using namespace std;
class Alpha
{
public:
Alpha() {}
Alpha(int val) : i(val) {}
virtual ~Alpha() {}
void addTarget(Alpha* alpha)
{
targets.push_back(alpha);
}
void display() {
cout << i << " -------------";
}
private:
int i; //!< Member variable "i"
list<Alpha*> targets;
};
и вот моя главная функция:
#include <iostream>
#include <list>
#include "Alpha.h"
using namespace std;
int main()
{
list<Alpha> teamA, teamB;
Alpha* alptr;
for(int i = 0; i < 3; i++)
{
alptr = new Alpha;
teamA.push_back(*alptr);
alptr = nullptr;
}
for(int i = 0; i < 3; i++)
{
alptr = new Alpha;
teamB.push_back(*alptr);
alptr = nullptr;
}
list<Alpha>::iterator it = teamA.begin();
for(;it != teamA.end(); it++)
{
for(list<Alpha>::iterator itr = teamB.begin();
itr != teamB.end();itr++)
{
it->addTarget(&(*itr));
}
}
it = teamA.begin();
list<Alpha*>::iterator itr = it->getTargets().begin();
/// now trying to access it
while(itr != it->getTargets().end())
{
(*itr)->display();
itr++;
}
return 0;
}
А вот мой выход:
segmentation fault (core dumped) process returned 139 (0x8B)
Я не вижу метод 'getTargets()' в любом месте. –
Я не ставил его здесь для краткости кода. На самом деле это внутри класса Alpha.h как сеттер и геттер. – meysamabl
Поскольку он работает с кодом @ sergej, я думаю, 'getTargets()' возвращает копию вместо ссылки. Вот почему я попросил определение метода. –