Название: Объект одного класса внутри другого! Проблема! Отправлено: nestoleh от Март 25, 2012, 03:22 Здравствуйте! Пишу програму и внезапно столкнулся с такой проблемой: есть два класса, один - главного окна (виджет), второй лично мой, его обьект используется для стека. Что бы все работало, нужно объект этого второго класса создать внутри первого, но компилятор ругается и название второго класса не определяется как тип! Вот фрагменты кода:
Код: // моя структура Ругается компилятор вот так: ..\DS_7_first\/dswidg.h:46: error: ISO C++ forbids declaration of 'myStack' with no type ..\DS_7_first\/dswidg.h:46: error: expected ';' before '*' token ..\DS_7_first\/dswidg.h:47: error: 'forSt' does not name a type первые два на строчку myStack *st; третий на forSt myStr; Кто знает, в чем проблема?? Название: Re: Объект одного класса внутри другого! Проблема! Отправлено: kambala от Март 25, 2012, 03:54 и на какую строчку твой коспилятор ругается? может он ещё и сообщение об ошибке какое-то выдаёт? что-то мои телепатические способности ночью барахлят.
у метода forSt Get(void); возвращаемый тип случайно должен быть не forSt *? или там поле класса должно иметь тип forSt вместо forSt *? Название: Re: Объект одного класса внутри другого! Проблема! Отправлено: nestoleh от Март 25, 2012, 11:12 Извините, сонный был, не заметил что сообщения компилятора не скинул! Уже добавил в первый пост...
Немного не понял вопрос про forSt Get(void); вот ее код: Код: forSt myStack::Get(void) Название: Re: Объект одного класса внутри другого! Проблема! Отправлено: mutineer от Март 25, 2012, 13:01 Вот это все, что ты выкинул в первый пост, оно в одном файле живет? и если живет в разных, то сделал ли ты инкулды?
Название: Re: Объект одного класса внутри другого! Проблема! Отправлено: kambala от Март 25, 2012, 14:06 Немного не понял вопрос про forSt Get(void); как правило, методы с названием get* подразумевают возвращение поля класса, но видно в твоём случае нужно что-то другоеНазвание: Re: Объект одного класса внутри другого! Проблема! Отправлено: nestoleh от Март 25, 2012, 14:16 Немного не понял вопрос про forSt Get(void); как правило, методы с названием get* подразумевают возвращение поля класса, но видно в твоём случае нужно что-то другоеЖивет в разных, но инклуды естественно подключены! Название: Re: Объект одного класса внутри другого! Проблема! Отправлено: kambala от Март 25, 2012, 14:21 ошибки компилятора говорят об обратном. инклуды точно находятся в dswidg.h [перед объявлением класса]?
Название: Re: Объект одного класса внутри другого! Проблема! Отправлено: nestoleh от Март 25, 2012, 15:01 Вот так выглядит dswidg.h
Код: #ifndef DSWIDG_H Название: Re: Объект одного класса внутри другого! Проблема! Отправлено: kambala от Март 25, 2012, 15:13 вроде выглядит нормально. выкладывай свой проект (или минимальный компилируемый с ошибкой).
Название: Re: Объект одного класса внутри другого! Проблема! Отправлено: Igors от Март 25, 2012, 15:16 Вероятно ifdef (стражи включения в инклудах) блокируют друг друга. Нужно в одном использовать предварительное описание
Название: Re: Объект одного класса внутри другого! Проблема! Отправлено: nestoleh от Март 25, 2012, 16:31 С вопросом так и не разобрался, поэтому создал стек как набор функций и переменных внутри базового класса, не самое изящное решение, но по скорости работы не уступает и ошибок не выдает! Проект могу выложить конечно, но он уже подредактирован и там все что не работало удалено :(! Всем спасибо что так оперативно откликнулись!
|