А пачиму у миня прога не линкуетсяяааа?...
т.е. если хочешь в других единицах трансляции ее использовать - то там же ее нужно и переписать
Ясно, спасибо
А может зависеть от компилятора?
Какой вообще смысл писать inline в cpp файле?..
Такое - врядли
Ты не мог бы уточнить вопрос?
inline пишется в теле класса, т.е. в .h файле.
Не, проблему это не решит, можешь попробовать.
А пишется в .h вне тела класса.
Не, проблему это не решит, можешь попробовать.
лол, решит, можешь попробовать.
Вот то, что написал - действительно решит. А если просто объявить в .h-файле функцию как inline, а потом описать ее в .cpp файле - толку не будет.
Если не веришь - можешь зайти, я тебе наглядно продемонстрирую.
Чтобы функция inline-илась, нужно чтобы ее тело было доступно компилятору в момент компиляции ее вызова. Этого никак нельзя добиться, если писать тело функции и ее вызов в разные модули компиляции.
Короче, спасибо
Оставить комментарий
erotic
Прога такая вот:component.h
component.cpp
sphere.h
sphere.cpp
main.cpp
файлы component.cpp, sphere.cpp и main.cpp включены в проект и каждый файл в отдельности компилируется, но прога не собирается с ошибкой
Если при этом в файле component.cpp функцию не объявлять как inline, то собирается прога. Также она собирается, если функцию Component::id описывать прямо в .h-файле при описании класса. Она тогда получается и inline, и все собирается.
Вот. Вопрос, собсно, почему такое поведение, и неужели мне придется все inline функции описывать прямо в описании класса?
Ах да! Все собирается вот как есть, если функцию id объявить как virtual int id;, но этого делать не хочется, да и не могу я понять, почему так все происходит.
Поможите...