Tôi có một hệ thống phân cấp các lớp. Lớp cơ sở sử dụng một số tham số điều chỉnh có thể tải từ tệp (và có thể tải lại trong thời gian chạy). Mỗi lớp dẫn xuất có thể thêm một số tham số bổ sung. Tôi đang tìm một cách để phân bổ một mảng thông số có kích thước chính xác trong constructor cơ sở, do đó tôi không phải deallocate và tái phân bổ trong lớp dẫn xuất. Tôi đã hy vọng cho một cái gì đó như thế này, nhưng nó không làm việc (thông số luôn có 2 yếu tố):Làm thế nào để phân bổ mảng trong constructor cơ sở với kích thước dựa trên lớp dẫn xuất?
class Base
{ static int nParms;
virtual int getNParms() { return nParms;}
float *parameters;
public:
Base()
{ parameters= new float[this->getNParms()];
parameters[0] = globalReloadableX;
parameters[1] = globalReloadableY;
}
};
int Base::nParams =2;
class Derived : public Base
{ static int nParms;
virtual int getNParms() { return nParms;}
public:
Derived() : Base()
{ parameters[2] = globalReloadableZ;
}
}
int Derived::nParams =3;
Tôi đã nhìn thấy this question, nhưng giải pháp đó không thực hiện khá công việc cho tôi. Tôi cũng đã cố gắng tạo tham số cho một mảng thông thường trong mỗi lớp:
class Base
{ float parameters[2]
...
class Derived : public Base
{ float parameters[3]
...
nhưng điều đó làm cho Derived có 2 mảng riêng biệt.
Bất kỳ ý tưởng nào?
Tại sao không? Quá rõ ràng! Đôi khi tôi chỉ nhận được quá quấn lên trong các chi tiết ... Cảm ơn bạn đã giải thích lý do tại sao. – AShelly
Không vấn đề gì xảy ra với mọi người! –