Kod:Jak zadeklarować i zaimplementować funkcję const i inline member?
point3f.h
Class Point3f {
...
inline void project2D(ProjType p, const Point2i& view) const;
};
point3f.cpp
inline void Point3f::project2D(ProjType p, const Point2i& view) const {
switch(p) {
case PROJ_XY:
glVertex2f(x * view.x, y * view.y);
break;
case PROJ_YZ:
glVertex2f(y * view.x, z * view.y);
break;
case PROJ_XZ:
glVertex2f(x * view.x, z * view.y);
break;
default:
break;
}
}
Wywołanie tej funkcji powoduje błąd w czasie kompilacji:
undefined reference to `Point3f::project2D(ProjType, Point2i const&) const'
Próbowałem każdy przypadek bez i symbolem inline
:
inline
w nagłówku, a nie w cpp:
Warning: inline function ‘void Point3f::project2D(ProjType, const Point2i&) const’ used but never defined [enabled by default
undefined reference to `Point3f::project2D(ProjType, Point2i const&) const'|
inline
w nagłówku, również w KPP:
Warning: inline function ‘void Point3f::project2D(ProjType, const Point2i&) const’ used but never defined [enabled by default
undefined reference to `Point3f::project2D(ProjType, Point2i const&) const'|
inline
nie w nagłówku, ale w KPP:
undefined reference to `Point3f::project2D(ProjType, Point2i const&) const'|
inline
nie w nagłówku, ani w cpp:
It works but that's not what I want
Pytanie:
- Czy
const and inline member function
sens? - Jak zadeklarować
const and inline member function
?
Z góry dziękuję.
Aby wyjaśnić, problem nie polega na mieszaniu 'const' i' inline' (robię to przez cały czas), ale w tym, że 'inline' musi znajdować się w pliku nagłówkowym. –
Podążając za tym, co powiedziałeś, g ++ podnosi tylko inne ostrzeżenie, że 'warning: funkcja inline 'void Point3f :: project2D (ProjType, const Point2i &) const' użyte, ale nigdy nie zdefiniowane [włączone domyślnie]' –
@ComboZhc Nie wkładaj funkcja w pliku .cpp w ogóle. Umieść go * tylko * w nagłówku. –