Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Cpp Шаблонный класс без конструктора
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Andreyy
имеется шаблонный класс находящийся в одном из хедеров большой библиотеки, Isoaglib, однако в IAR"е(v6.4) он не хочет компилится и требует конструктора по умолчанию, можно ли его откомпилить, без данного требования компилятора? Данная библиотека спокойно компилится на MS VisualStudio 2008.
Код
  template < typename OWNER_T > class SchedulerTaskProxy_c : public SchedulerTask_c
  { public:
      typedef OWNER_T Owner_t;
      SchedulerTaskProxy_c( Owner_t &art_owner ) : mrt_owner( art_owner ) {}   <<Error[Pe291]: no default constructor exists for class
      virtual ~SchedulerTaskProxy_c() {}
    private:
      virtual void timeEvent() { mrt_owner.timeEvent(); }
      // SchedulerTaskProxy_c shall not be copyable. Otherwise the
      // reference to the containing object would become invalid.
      SchedulerTaskProxy_c( SchedulerTaskProxy_c const & );
      SchedulerTaskProxy_c &operator=( SchedulerTaskProxy_c const & );
      Owner_t &mrt_owner;
  };
neiver
В каком контектсте используется данный шаблон?
Andreyy
Цитата(neiver @ Dec 18 2012, 23:13) *
В каком контектсте используется данный шаблон?

Диаграмма наследования
http://isoaglib.org/2.5.2/all/d9/dfd/class...skProxy__c.html
Вот кусок одного из двух хеадеров, где используется тот шаблон
Код
class BaseCommon_c : public CanCustomer_c
  {public:
    ...
   private:
    ...
    class SchedulerTaskProxy_c : public SchedulerTask_c
    { public:
       typedef BaseCommon_c Owner_t;
       SchedulerTaskProxy_c(Owner_t &art_owner) : SchedulerTask_c( 100, true ), mrt_owner(art_owner) {}
       virtual ~SchedulerTaskProxy_c() {}
       private:
       virtual void timeEvent() { return mrt_owner.timeEvent(); }
       // SchedulerTaskProxy_c shall not be copyable. Otherwise the reference to the containing object would become invalid.
      SchedulerTaskProxy_c(SchedulerTaskProxy_c const &);
      SchedulerTaskProxy_c &operator=(SchedulerTaskProxy_c const &);
      Owner_t &mrt_owner;
    };
    typedef SchedulerTaskProxy_c Task_t;
    ....
   }

На прямую данный хеадер не подключен, даже если в начале конкретно его объявить, все равно та же ошибка будет.
Непомнящий Евгений
Ты б минимальный неработающий пример привел...

В твоем втором сообщении шаблона SchedulerTaskProxy_c нет, зато есть одноименный класс
Andreyy
Цитата(Непомнящий Евгений @ Dec 19 2012, 10:40) *
Ты б минимальный неработающий пример привел...

В твоем втором сообщении шаблона SchedulerTaskProxy_c нет, зато есть одноименный класс

http://rghost.ru/42355176
Непомнящий Евгений
*Минимальный* неработающий пример - выдели проблемный код, выкини все ненужное и оставшиеся 10-20 строк вставь сюда.

Ковырять твой проект лениво...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.