Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Раздельная компиляция::inline 
:(
    Опции темы
versus
Дата 15.3.2005, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 8.3.2005
Где: Переславль-Залесс кий

Репутация: нет
Всего: 3



Как объявить inline метод если я использую раздельную компиляцию?

Вот есть такой класс...

// Test.hpp
Код

class Test
{
public:
    void method1();
};


// Test.cpp
Код

#include "Test.hpp"

void Test::method1()
{
// tralala
}


// main.cpp
Код

#include "Test.hpp"

int main()
{
    Test t;
    t.method1()
}



Хочу method1 сделать подставляемым. Но куда бы я не поставил inline (собственно вариантов тут немного: либо в объявлении, либо в определении, либо и там и там), получаю ошибку от линкера:

: undefined reference to `Test::method1()'

Как быть? Только если определять method1 внутри класса?

компилятор g++ 3. с чем-то

PM MAIL WWW   Вверх
Дрон
Дата 15.3.2005, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



Странно.
В Visual C++ то же самое smile

Добавлено @ 10:45
Наверно, так всё-таки нельзя делать, потому что инлайн функция не компилируется в "настоящую" функцию и из-за этого раздельная компиляция не прокатит.

Это сообщение отредактировал(а) Дрон - 15.3.2005, 10:44


--------------------
Да. Именно так.
PM   Вверх
versus
Дата 15.3.2005, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 8.3.2005
Где: Переславль-Залесс кий

Репутация: нет
Всего: 3



Нашел! :-)

// Test.hpp
Код

class Test
{
public:
    void method1(); // этот метод будет подставляемым
    void method2(); // а этот -- нет
};

inline void Test::method1()
{
    // tralala
}


// Test.cpp
Код

#include "Test.hpp"

void Test::method2()
{
    // tralala
}


Спасиоб, wallace.

Это сообщение отредактировал(а) versus - 15.3.2005, 11:22
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0420 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.