Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Раздельная компиляция::inline


Автор: versus 15.3.2005, 00:39
Как объявить 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. с чем-то

Автор: Дрон 15.3.2005, 10:38
Странно.
В Visual C++ то же самое smile

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

Автор: versus 15.3.2005, 11:19
Нашел! :-)

// Test.hpp
Код

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

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


// Test.cpp
Код

#include "Test.hpp"

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


Спасиоб, wallace.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)