Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: inline функция родительского класса - unresolved symbol  (Прочитано 6574 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« : 29-01-2009 18:22 » 

имеется такой набор структур
Код:
struct s_1
{
int i1;
inline void f1(); //<<<
};

void s_1::f1()
{
}


struct s_2:public s_1
{
int i2;
void f2();
};

void s_2::f2()
{
f1();
}


s_2 s2;

если всё это в одном файле, то компилится без проблем. Если раскидано как положено по файлам h и cpp , то компилятор (студия №6, в другой не пробовал) стонет, что s2.obj : error LNK2001: unresolved external symbol "public: void __thiscall s_1::f1(void)" (?f1@s_1@@QAEXXZ)

при этом, если убрать inline из struct s_1 перед функцией f1(), то ругани нету (если проект полностью перекомпилить после этого)

почему ругается ?

(проект приложен)

* test1.rar (0.56 Кб - загружено 869 раз.)
Записан

Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 29-01-2009 19:30 » 

Алексей1153++, по стандарту, inline-функция должна быть определена в каждом модуле, в котором используется. В .cpp она изолирована, реализация не видна при компиляции второго .cpp. Нужно помещать в заголовок Улыбаюсь
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 29-01-2009 19:36 » new

хм, получилось )
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines