Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Таблица виртуальных функций
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Rusoil
Есть базовый класс с виртуальными методами - class A.

CODE
class A
{
public:
virtual ~A() {}

// Виртуальные функции
virtual void Get_A() { }
virtual void Get_B() { }
....


protected:

}



От него производный класс, в котором уже подробно расписываю виртуальные функции.

CODE

class B : public A
{
public:

B() { }

~B() { }

virtual void Get_A();
virtual void Get_B();
...

private:

}


Инициализирую через указатель и new.

A *pPointer;
pPointer = new B;

Далее работаю с указателем, описание класса A находиться в хедере. Для него виртуальные функции не расписаны, т.е. используется вроде шаблона.

При глобальной линковке ругается вот такой строкой:
Error[Li005]: no definition for "Virtual function table for A"

Почему не создалась эта таблица? Что не так сделал?




Нашел проблему. Два виртуальных метода возвращали значения, а все остальные были void. Когда просто вписал там return FALSE, то таблицу компилятор сделал.
meister
Цитата(Rusoil @ Jun 1 2009, 17:17) *
Для него виртуальные функции не расписаны, т.е. используется вроде шаблона.


Если экземпляры класса с виртуальными функциями использовать не предполагается, то виртуальные функции имеет смысл сделать pure virtual, тогда не придется делать заглушки.
sergeeff
На самом деле вы похоже функцию объявили, но не инстанцировали (т.е. собственно тела у функции не было). Потому и таблица не создавалась.
Rusoil
Ага, так и было. Спасибо за ответы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.