Tôi muốn tạo một đối số cho một trong các hàm thành viên tùy chọn. Khi không có đối số nào được cung cấp, nó sẽ sử dụng một biến thành viên.Làm thế nào để sử dụng biến thành viên làm đối số mặc định trong C++?
Tuy nhiên, khi tôi đã cố gắng để biên dịch nó nó cho thấy "lỗi: sử dụng không hợp lệ của không tĩnh thành viên dữ liệu 'Object :: initPos'"
Chỉ cần để cô lập các vấn đề, tôi đã cố gắng mặc định một kiểu int và nó được biên soạn tốt. Tôi tự hỏi vấn đề với mã của tôi là gì và cách tôi có thể sử dụng hàm thành viên làm giá trị mặc định.
Cảm ơn sự giúp đỡ của bạn!
Object.h
class Object
{
public:
...
void MoveTo(double speed, Point position);
protected:
Point initPos;
Point currPos;
};
Object.c
void Object::MoveTo(double speed, Point position = initPos)
{
currPos = postion;
}
Point.h
class Point
{
...
private:
double x;
double y;
double z;
};
Câu hỏi của bạn làm tôi đẻ trứng này một: http://stackoverflow.com/questions/9286801/valid-expressions-for-default-function-arguments –