Lỗi expression must have a constant value

Chào các mem trong “gia đình”. Mình là newbie về C++ có thể nói mình chưa qua trường lớp nào nên tự mày mò là chính. Nhân đây có 1 số vấn đề nhờ mọi người giải dùm.

  1. Em có tự học C++ qua video của anh Lê Trần Đạt nên kiến thức không nhiều nên mong mọi người góp ý.

  2. Em đang mày mò về cái class trong C++ lên mạng tìm hiểu 1 số bài tập nhưng tới bài này nó có lỗi thế này mong mọi người TEST xem nhé:smile:

    #include
    #include

    using namespace std;

    class Nameoffamily
    {
    private:
    string name;
    string QH;
    int Birthday;

    public:

     void setData()
     {
     	cout << "Enter your name: ";
     	getline(cin, name);
     	fflush(stdin);
     	cout << "Enter you QH: ";
     	getline(cin, QH);
     	fflush(stdin);
     	cout << "Enter your birthday: ";
     	cin >> Birthday;
     }
     void getData()
     {
     	cout << "Your name: " << name << endl;
     	cout << "Your QH: " << QH << endl;
     	cout << "Your birthday: " << Birthday << endl;
    
     }
    

    };
    int main()
    {

     	int i;
     	cout << "Enter number of family: ";
     	cin >> i;
     	const int number = i;
    
     	Nameoffamily Thanhvien[number];
    
     	for (i = 0; i < number; i++)
     	{
     		cout << "No: " << i + 1 << "/" << number << endl;
     		Thanhvien[i].setData();
     		
     	}
     	cout << endl;
     	cout << "==OutPut==" << endl;
     	for (int i = 0; i < number; i++)
     		Thanhvien[i].getData();
    
     	return 0;
     }
    

Nó hiện lỗi là: expression must have a constant value. Mà em biết sơ sơ là hằng là 1 giá trị cố định nhưng sao mà em vẫn ko hiểu mấy chương trình mạng nó có kết quả nhưng em lại thử chạy nó báo lỗi . Đặc biệt là cái giòng Nameoffamily Thanhvien[number]; (P/s: Trên bài mẫu cái dòng này là như vậy đó@@)
Mong các bác cao tay sửa dùm em với nha!! Kiến thức còn nông cạn lắm :smile:.

Chào bạn! trước tiên để post code bạn nên đọc topic này:


Thứ 2 là 2 phương thức getData và setData bạn phải khai báo trong class. Và khi gọi phương thức ngoài class thì phải:

void Nameoffamily::setData(){
...
}

Theo mình biết là như vậy :grin:

1 Like

Ủa mình có khai báo setData và getData trong Class rồi mà bạn có khai báo ở ngoài Class đâu?

à mình nhầm :smiley:

Đoán đoán là sai khúc này.
Vì khai báo mảng thì số phân từ phải cụ thể, chính xác. Không cho phép nhận giá trị từ bàn phím.
Đành nhờ cao nhân khác vào chỉ vậy.

Mình dùng g++ (gcc) biên dịch chỉ bị lỗi:

  fflush(stdin);
         ^
hello.cxx:20:15: error: ‘fflush’ was not declared in this scope
  fflush(stdin);```

sau khi thêm thư viện ```#include <cstdio.h>``` và thay ``` fflush(stdin);``` thành ```getchar();```. Chương trình chạy bình thường không có lỗi gì

#include
#include
#include

using namespace std;

class Nameoffamily
{
private:
string name;
string QH;
int Birthday;

public:

void setData()
{
	cout << "Enter your name: ";
	getline(cin, name);
	getchar();	//fflush(stdin);
	cout << "Enter you QH: ";
	getline(cin, QH);
	getchar();	//fflush(stdin);
	cout << "Enter your birthday: ";
	cin >> Birthday;
}
void getData()
{
	cout << "Your name: " << name << endl;
	cout << "Your QH: " << QH << endl;
	cout << "Your birthday: " << Birthday << endl;

}

};
int main()
{
int i;
out << "Enter number of family: ";
cin >> i;
const int number = i;

Nameoffamily Thanhvien[number];

for (i = 0; i < number; i++) {
	cout << "No: " << i + 1 << "/" << number << endl;
	Thanhvien[i].setData();

}
cout << endl;
cout << "==OutPut==" << endl;
for (int i = 0; i < number; i++)
	Thanhvien[i].getData();

return 0;

}

Oh cám ơn nhé @Pham_Van_Hai. Mình đã thử và chạy rất ngon. Cám ơn bạn đã góp ý nhé!!
(P/s: Test tuyệt vời trên Dev C++ nhưng còn VS thì ko chạy được nhưng ko sao!!)

Cơ mà mình cũng thử cả 2 code đều chạy tốt nhưng cái nào cũng chạy tốt trên Dev C++ còn trên Visual Studido thì cả 2 đều không chạy được lạ nhỉ :persevere:!!!

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?