Получение адреса экземпляра класса внутри самого класса
Есть класс Point. В main создается, допустим, 5 экземпляров: pnt1 - pnt5. Между ними создается список связей - некоторые экземпляры соединяются с некоторыми другими. Это описано в массиве std::vector<connect> connects, где connect - структура из двух указателей на соединенные экземпляры Point. Внутри класса Point есть массив std::vector<Point*> connects;, который нужно заполнить указателями на экземпляры, с которыми связан непосредственно конкретный экземпляр.
Код main:
int main() {
Point pnt1 = Point();
Point pnt2 = Point();
Point pnt3 = Point();
Point pnt4 = Point();
Point pnt5 = Point();
std::vector<Point::connect> connect_list;
// pnt2 связан с pnt1, pnt2 и pnt4
connect_list.push_back({ &pnt1, &pnt2 });
connect_list.push_back({ &pnt2, &pnt3 });
connect_list.push_back({ &pnt2, &pnt4 });
... // другие соединения
// теперь отфильтруем информацию для pnt2, вот тут работает неправильно
pnt2.setConnects(connect_list, &pnt2);
...
}
При использовании this внутри экземпляра программа работала неправильно, поэтому в функцию подал явный адрес экземпляра &pnt2.
Код класса Point:
class Point
{
private:
std::vector<Point*> connects;
public:
struct connect{ Point* pnt1; Point* pnt2; };
void setConnects(std::vector<connect> given_connects, Point* this_adr){
for (int i = 0; i < connects.size(); i++) {
// используем поданный указатель и указатель this для сравнения
// если в структуре первый элемент это наш экземпляр, то второй элемент - связанный с ним
if (given_connects[i].pnt1 == this_adr) {
connects.push_back(given_connects[i].pnt2);
}
// или наоборот
if (given_connects[i].pnt2 == this) {
connects.push_back(given_connects[i].pnt1);
}
}
};
}
С помощью точек остановки, при вызове функции, увидел значения указателей: this_adr == 0x00f0f994; this == 0x00f0f648, то есть они указывают на разные объекты.
Почему this работает неправильно. Это получается, указатель на класс в целом, а не на текущий элемент? Как мне получить действующий указатель, чтобы не передавать this_adr в функцию каждый раз?