Code:Làm cách nào để khai báo và triển khai hàm const và inline?
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;
}
}
gọi hàm này đặt ra một lỗi trong thời gian biên dịch:
undefined reference to `Point3f::project2D(ProjType, Point2i const&) const'
Tôi đã thử mọi trường hợp mà không cần và với inline
biểu tượng:
inline
trong phần đầu, không phải trong 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
trong phần đầu, cũng trong 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
không trong phần đầu, nhưng trong cpp:
undefined reference to `Point3f::project2D(ProjType, Point2i const&) const'|
inline
không có trong tiêu đề, không phải trong cpp:
It works but that's not what I want
Câu hỏi:
- Liệu
const and inline member function
có ý nghĩa? - Làm cách nào để khai báo
const and inline member function
?
Xin cảm ơn trước.
Để làm rõ, sự cố không có trong sự trộn lẫn của 'const' và' inline' (tôi làm tất cả thời gian), nhưng trong thực tế là 'inline' phải nằm trong tệp tiêu đề. –
Theo những gì bạn đã nói, g ++ chỉ tăng thêm một cảnh báo rằng 'warning: inline function 'void Point3f :: project2D (ProjType, const Point2i &) const' được sử dụng nhưng không bao giờ được định nghĩa [được bật theo mặc định]' –
@ComboZhc Không đặt chức năng trong tệp .cpp. Đặt nó * chỉ * trong tiêu đề. –