Проблемы с библиотекой.

Тема в разделе "Arduino & Shields", создана пользователем 4erem6a, 7 авг 2017.

  1. 4erem6a

    4erem6a Нуб

    Захотелось сделать что-то вроде своих векторов под ардуино. Получилось это:
    DynamicCollection.h
    DynamicCollection.cpp
    Делал в студии (в ней всё работает).
    Но, при попытке сделать так:
    Код (C++):
    #include <DynamicCollection.h>

    DynamicCollection<int> DColl();

    void setup()
    {
      DColl.Add(1);
    }

    void loop() {}
    Получаем это:
    Код (Text):
    sketch_aug06a:7: error: request for member 'Add' in 'DColl', which is of non-class type 'DynamicCollection<int>()'

       DColl.Add(1);

             ^
    exit status 1
    request for member 'Add' in 'DColl', which is of non-class type 'DynamicCollection<int>()'
    Может кто-нибудь сталкивался с подобным? Или просто я что-то не так сделал...
     
  2. NikitOS

    NikitOS Король шутов Администратор

    Файл. h
    Код (C++):
        void Add(T object);
        void Remove(T object);
        void RemoveAt(uint index);
    Разве не так:
    Код (C++):
         void DynamicCollection Add(T object);
        void DynamicCollection Remove(T object);
        void DynamicCollection RemoveAt(uint index);
     
  3. 4erem6a

    4erem6a Нуб

    Не помогло)
    Да и зачем это вообще?
     
  4. NikitOS

    NikitOS Король шутов Администратор

    Всмымле
     
  5. 4erem6a

    4erem6a Нуб

    Код (C++):
     void DynamicCollection RemoveAt(uint index);
                ^
     
  6. AlexU

    AlexU Гуру

    Либо содержимое файла 'DynamicCollection.cpp' перенесите в файл 'DynamicCollection.h' (точнее в заголовочный файл нужно перенести все "шаблонные декларации").
    Либо файл 'DynamicCollection.cpp' включайте через '#include', что не очень красиво:
    Код (C++):
    #include <DynamicCollection.h>
    #include <DynamicCollection.cpp>

    DynamicCollection<int> DColl();

    void setup()
    {
      DColl.Add(1);
    }

    void loop() {}
    Проблема в том, что используются шаблоны и исходники с шаблонами компилируются не совсем так как исходники без шаблонов.
     
    4erem6a, NikitOS и arkadyf нравится это.
  7. b707

    b707 Гуру

    Не так. Внутри описания класса имя класса можно не указывать.
     
    arkadyf нравится это.