У меня проблема с C++, но я не знаю, как это решить.Отключение развязки вложенных классов C++
У меня есть два класса, A и B, которые в любом случае не наследуются. A - класс Client, а B - класс, в котором хранится список Client (класс A).
Я хочу только B, чтобы создать экземпляр и уничтожить класс B, но я хочу, другие части моего кода, чтобы иметь возможность вызывать методы в рамках класса А.
Изначально у меня было следующее:
class B {
public:
class A {
public:
void setX(int val);
int getX();
private:
int x;
A();
~A();
};
B()
~B()
....
};
Это позволяет мне называть конструктор/деструктор A из B и делает его конструктором/деструктором частным от остальных, но вызов setX() и getX() на A стал хлопотным, поскольку мне нужно вызвать B :: A.
Я думал, что положить A в свой собственный файл (это собственный класс, а не вложенный), поскольку другие классы могут вызывать методы на A. Но теперь B не может получить конструктор/деструктор A, поскольку он является приватным. Если я сделаю это общедоступным, тогда любой может создать объект класса A.
Я не уверен, что это лучший способ сделать это. Если A - это собственный класс, как я могу сохранить конструктор/деструктор, доступный только для B, пожалуйста, в то время как другие классы могут вызвать setX() и getX() для объекта из A, пожалуйста?
Спасибо, это работает как шарм! Теперь я знаю об использовании ключевого слова «friend», спасибо большое! – user1777907