30/09/2018, 18:17
Lỗi hàm thành viên tĩnh
Mình có một class Fraction. Khai báo trong file .h như sau. Hàm getNumberOfFraction() dùng để đếm số lượng đối tượng đã được tạo ra trong hàm main.
Fraction.h
class Fraction
{
static int countFraction;
static int Denom;
static int Numer;
public:
static int getNumberOfFraction();
static void setDataToFraction(int _denom, int _numer);
static int GetNextID() { return countFraction++; }
Fraction()
{
countFraction++;
}
};
Fraction.cpp
void Fraction::setDataToFraction(int _denom, int _numer)
{
Denom = _denom;
Numer = _numer;
}
int Fraction::getNumberOfFraction()
{
return countFraction;
}
File main.cpp
int Fraction::countFraction = 1;
int _tmain(int argc, _TCHAR* argv[])
{
cout << Fraction::getNumberOfFraction();
return 0;
}
Và bị lỗi Error C2352: illegal call of non-static member function.
Nhưng nếu gọi hàm thông qua tạo một đối tượng thì nó lại chạy bình thường. Ai giải thích hộ em với. Hàm tĩnh - static gọi bằng tên lớp mà? Sao lỗi là gọi hàm non - static member function?
Code C# lâu quá về C++ làm rối hết
Bài liên quan
cái này là truy cập ::countFraction (thuộc tính private) nên bị lỗi
Nhưng mà lỗi ở hàm Fraction::getNumberOfFraction(); bạn ơi. Còn cái trên chạy bình thường
Hình như bạn định nghĩa hàm getNumberOfFraction() 2 lần
ở file .h có khai báo static nhưng dưới file . cpp thì không có kìa bạn ơi