родительский класс объявлен как дружеский?
struct Object;
struct Parent {
Object* buildObject() = 0;
};
struct Object {
protected:
void initInstance() = 0;
friend struct Parent;
};
struct ObjectDerived : public Object { ... }
struct ParentDriver : public Parent {
Object* buildObject() {
auto obj = new ObjectDerived;
obj->initInstance(); // ошибка
return obj;
}
};
А зачем в таком случае делать методы в родительском классе приватными? Протектед для такого придуман
Одно и то же в этом случае. Запрещено и протектед и приват, поэтому обобщено приватные.
Ошибку в студию тогда.
отношение дружества в C++ не транзитивно и не симметрично
https://onlinegdb.com/AlVS4gSPR
А, ну так ты дружишь с одним классом, а дернуть пытаешься из другого
Я имел ввиду почему нельзя было сделать обратное? Это бы что то сломало?
впредь используй слово class вместо struct, если объект содержит что-то сложнее публичных полей
Одно другому не мешает. Они почти равнозначны в плюсах.
ну хоть не в перемешку и ладно
Обсуждают сегодня