Есть два класса: А и B. A это Sigleton, B простой класс(для примера). Так вот, разные объекты класса А никак не связаны между собой.
#include <iostream>
using namespace std;
class B {
public:
B(int a, int b) {
this->a = a;
this->b = b;
}
int a, b;
};
class A {//singleton
private:
A(){}
public:
int x, y;
B* b;
static A getInstance() {
static A instance;
return instance;
}
bool operator==(const A& a) {
return a.x == this->x && a.y == this->y;
}
};
void main() {
A* a1 = &A::getInstance();
A* a2 = &A::getInstance();
a1->x = 121;
a1->b = new B(65, 12);
cout << a2->b->a << endl;
system("pause");
}
В это случае a1.x=121, a1.y=0, a1.b.a=65, a1.b.b=12, а у объекта a2 - дефолтные значения(a2.x=0, a2.y=0, a2.b=NULL). Что происходит?!
Вы возвращаете копии объекта (кстати, закрыв конструктор по умолчанию, вы не закрыли копирующий конструктор!):
static A getInstance() {
static A instance;
return instance;
}
Нужно возвращать ссылку -
static A& getInstance() {
static A instance;
return instance;
}
Вообще непонятно, что у вас происходит и как оно компилируется:
A* a1 = &A::getInstance();
Вы получаете указатель на временный объект...
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости