В таком варианте не компилируется (vc71):
error C2248: 'Item::Item' : cannot access private member declared in class 'Item'
...\item.h(37) : see declaration of 'Item::Item'
...\item.h(22) : see declaration of 'Item'
Вариантов два — закомментировать строку в классе Item помеченную восклицательными знаками
ЛИБО!!!
перенести объявления коеструкторов класса Control в h-ник (сейчас закоментарено).
Оба, тем не менее, мне не нравятся, т.к. я этого не понимаю
Здравствуйте, Wo-o-olf, Вы писали:
WOO>Есть примерно такое:
WOO>protected: // interface
WOO> Item(int uii, Item * pParent = 0) WOO> {
Это сделано для того, что бы ты мог создать экземпляр класса вызвал только этот конструктор. И обходить это не рекомендуется ))) Может нарушится логика работы класса
Здравствуйте, VadimB, Вы писали:
VB>Это сделано для того, что бы ты мог создать экземпляр класса вызвал только этот конструктор. И обходить это не рекомендуется ))) Может нарушится логика работы класса
Я знаю это я делал
Именно для этого и пытался явно спрятать конструктор по умолчанию Item
Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>Приведенный тобой код не должен приводить к такой ошибке. Код точно такой?
На VC7.1 все именно так, как описАл Wo-o-olf. Причем, если убрать виртуальное наследование, то все компилируется
WOO>Сойдёмся на том, что это бага компилера?
Так это с самого начала понятно было...
Интересно было бы проверить на VS2005, и если ошибка там не исчезнет, то можешь слать bug-report.