реклама на сайте
подробности

 
 
> 2 вопроса по Си++, WinAVR
kurtis
сообщение Aug 18 2008, 13:06
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Вопрос 1:
Есть функция getErrorPacket(), она является частью класса Etaz_item, который в конструкторе принимает ссылку на класс типа NetTransferConstrol, который уже в свою очередь содержит функцию get_error_packet(), которая ""генерирует" исходные данные.
Упрощенно класс Etaz_item выглядит следующим образом
Код
class NetTransferConstrol;

class Etaz_item: public TechObj
{
    private:
        NetTransferConstrol & cBfppClass;
    public:
        void func1();
        void func2();
        uint8_t getErrorPacket()
        {            
            return cBfppClass.get_error_packet();            
        };
        Etaz_item ( NetTransferConstrol & _cBfppClass )
                    : cBfppClass ( _cBfppClass )
        {
            //.......
        };
};

т.е. есть какой-то класс NetTransferConstrol, описание которого находится где-то в другом месте, и сам класс Etaz_item, который принимает ссылку на обьект типа NetTransferConstrol. К классу Etaz_item относится 2 файла : Etaz.cpp, где описан код реализации всех функций класса, и Etaz.h, где находится реализация структуры класса.
И вот тут начинаются непонятные вещи, когда я код функции getErrorPacket() помещаю в Etaz.cpp, то проект компилируется, но если я перемещая код функции в класс, как показано в примере, то компилятор начинает ругаться
Цитата
./src/Etaz.h:166: error: invalid use of incomplete type 'struct NetTransferConstrol'
./src/Etaz.h:122: error: forward declaration of 'struct NetTransferConstrol'

Почему компилятор генерирует ошибку в случае когда код функции описан прямо в классе, но ничего не выдает, когда эта же функция описана во внешнем файле(Etaz.cpp)? Возможно как-то получается ситуация когда класс типа Etaz_item "родился", а класс типа NetTransferConstrol еще нет, но тогда совсем непонятно как оно работает и где оно берет ссылку... И непонятно причем тут "struct NetTransferConstrol", ведь NetTransferConstrol обьявлен как class?
Пробовал имитировать подобную ситуацию в MinGW, но там все компилируется без проблем, так что считаю что это не синтаксическая ошибка...

Вопрос 2:
Как мне убедится что на момент создания класса Etaz_item, обьект типа NetTransferConstrol уже существует, и ссылка будет правильной?

Всем заранее спасибо за помощь!!! smile.gif
З.Ы. Компилятор WinAVR 20080610
З.Ы.Ы. Обьекты создаются статически во время начальной инициализации
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Amper25
сообщение Aug 20 2008, 15:51
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 215
Регистрация: 10-04-07
Пользователь №: 26 929



Цитата
заказчик может сказать - не использовать определенный язык, компилятор - век понятий. Поэтому если софт коммерческий приходится осторожничать, если для себя или внешние условия неблагоприятны, то можно пуститься во что угодно.


Сколько аргументов не перебирал, до такого не додумался smile.gif
Если так подходить, ASM в руки...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- kurtis   2 вопроса по Си++   Aug 18 2008, 13:06
- - Amper25   Ох уж эти HighLevel программеры. Ну зачем для MCU,...   Aug 18 2008, 13:31
- - SamHaris   Я бы так писал: Код#include <NetTransferConstr...   Aug 19 2008, 04:32
- - Сергей Борщ   Цитата(kurtis @ Aug 18 2008, 16:06) Вопро...   Aug 20 2008, 05:54
- - Kuzmi4   2 Сергей Борщ Цитата..Не поверите - чтобы использ...   Aug 20 2008, 07:30
|- - Сергей Борщ   Цитата(Kuzmi4 @ Aug 20 2008, 10:30) 2 Сер...   Aug 20 2008, 07:59
- - Kuzmi4   2 Сергей Борщ - ага , что-то похожее я встречал ко...   Aug 20 2008, 08:32
|- - dch   не используйте C++ - для коммерческого софта это н...   Aug 20 2008, 08:47
|- - sergeeff   Цитата(dch @ Aug 20 2008, 12:47) не испол...   Aug 20 2008, 09:25
- - Kuzmi4   2 dch - это почему же ??   Aug 20 2008, 08:47
|- - dch   Цитата(Kuzmi4 @ Aug 20 2008, 12:47) 2 dch...   Aug 20 2008, 15:35
- - Amper25   Ну что поаргументирую тут... "Ужасов" к...   Aug 20 2008, 09:06
|- - ReAl   Цитата(Amper25 @ Aug 20 2008, 12:06) 1.Ко...   Aug 20 2008, 11:00
|- - Сергей Борщ   Цитата(Amper25 @ Aug 20 2008, 12:06) Пока...   Aug 20 2008, 11:55
- - Amper25   Ну соглсен в принципе. Для успокоения души давай...   Aug 20 2008, 11:13
|- - Огурцов   Цитата(Amper25 @ Aug 20 2008, 11:13) Для ...   Aug 20 2008, 11:41


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.0137 секунд с 7
ELECTRONIX ©2004-2016