Không thể khai báo mảng trong class

indent preformatted text by 4 spaces
#include <iostream>

using namespace std;

class Test
{
private:
    int x = 10;
    int newArray[x];
public:

};
int main()
{

    return 0;
}

Khi chạy code này, nó báo lỗi là "invalid use of non-static data member ‘Test::x’ ". Nhưng nếu chuyển phần khai báo newArray vào constructor thì nó lại chạy được. Tại sao lại như thế? Mong mọi người giải thích giúp mình.

Dùng biến để khai báo cho mảng tĩnh??.

Ơ thế dùng cái gì hử bác? Em mới học c++, trước giờ dùng biến vẫn ok, nhưng vào class nó lại bị thế. @@
Edit: mà em thử thay bằng vector thì nó vẫn sai lỗi như vậy

Khi khai báo 1 mảng tĩnh phải là 1 hằng số. Muốn khai báo số phần tử bằng biến số phải sử dụng int vaue = 3; int *arr = new int [value];
Trước giờ dùng biến vẫn Ok thì lần đầu tiên mình nghe. Vector là một đối tượng cho phép tự “co giãn” số phần tử.

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