Поэтому я объявляю класс Inner и его конструктор как частные.
Код: Выделить всё
class Outer
{
private:
class Inner
{
friend class Outer;
private:
Inner(int a, int b)
{
SomeValue = a;
SomeValue1 = b;
}
Inner(Inner&) = delete;
Inner(const Inner&)
{
}
Inner(Inner&&) = delete;
Inner(const Inner&&) = delete;
auto operator=(Inner&) = delete;
auto operator=(const Inner&) = delete;
auto operator=(Inner&&) = delete;
auto operator=(const Inner&&) = delete;
public:
int SomeValue = 1;
int SomeValue1 = 1;
};
public:
Inner GetInner()
{
return Inner(2, 2);
}
int SomeValue;
};
Код: Выделить всё
Outer outer;
auto A(outer.GetInner());
A.SomeValue++;
auto B = outer.GetInner();
Могу ли я предотвратить это?
Я не хочу кто-то использует класс Inner вне класса Outer.
Подробнее здесь: https://stackoverflow.com/questions/790 ... side-class