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

 
 
> Передать массив в объект(С++)
kurtis
сообщение Jul 5 2007, 10:46
Сообщение #1


Местный
***

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



Есть класс.
Код
    
class OZK: public dev
    {
        public:
....  
                uint8_t no_of_devs;
        void initialize(const uint8_t *mass);    
....
    };


есть функция initialize() которой нужно передать некоторые количество значений(адресса входов).
я создаю массив и пытаюсь передать на него указатель в функцию initialize().

Код
[code]
    const uint8_t massiv_1[2]=
    {
        100,
        200,
    };


вот сам код того как я передаю значения в обьект

Код
...
    Object_1.initialize(massiv_1);
    Object_1.no_of_devs=5;
...



В оригинале, massiv_1 содержит адреса входов, с которыми будет работать создаваемый обьект, но проблема в том что я изначально незнаю сколько должно быть входов и сколько должно быть обьектов. В ситуации когда есть только 1 обьект, я решал эту проблему задавая требуемое количество входов и адреса входов с помощью команд препроцессора(#define #if #elif и тд).

Был .H файл, где я задавал конфигурацию обьекта
Код
#define      No_of_devs 6                    //Количество входов устройства
#define         Addr_1 100                       //Адреса входов
#define         Addr_2 200
и тд....


ну и соответственно в описание обьекта я писал
Код
#if    No_of_devs == 1                
    Object_Addr[1] = Addr_1
#elif     No_of_devs == 2
        Object_Addr[1] = Addr_1
        Object_Addr[2] = Addr_2
....и тд.....


Таким образом я добился того, что я в одном файле ПОЛНОСТЬЮ описую конфигурацию 1го моего обьекта, и нигде больше ничего не трогаю....

Но когда мне нужно создать несколько обьектов(2 и более), то такой способ уже не подходит, т.е. все создаваемые обьекты, будут имет одинаковую конфигурацию.
Чтоб решить эту проблему я создаю таблицы и адреса этих таблиц передаю в создаваемый обьект.
Но проблема в том что код не хочет компилироватся....
компилятор выдает ошибку

Код
                 from Devs.cpp:4:
OZK_config.h:54: error: redefinition of `const uint8_t massiv_1[2]'
OZK_config.h:54: error: `const uint8_t massiv_1[2]' previously defined here
In file included from Devs.cpp:11:
OZK_config.h:54: error: redefinition of `const uint8_t massiv_1[2]'
OZK_config.h:54: error: `const uint8_t massiv_1[2]' previously defined here


использую WinAVR - 20050214

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


Прошу прощения за кучу вероятно лишней информации, но мой вопрос вероятно сводится к тому, как передать масив данных в обьект???

З.Ы. Книжки читал и делал как написано в примерах, но видимо не очень помогло....
З.Ы.Ы. прошу прощения если не очень ясно выражаю свои мысли!
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 27th July 2025 - 15:49
Рейтинг@Mail.ru


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