Tôi đã đọc về giải pháp const A a[3] = { {0,0}, {1,1}, {2,2} },
nhưng trong chương trình của tôi const
không thể được sử dụng:Làm thế nào tôi có thể tạo một mảng các đối tượng lớp có hàm tạo yêu cầu vài đối số?
class Paper: public PaperQueue{
...
protected:
typedef int (Utils::*funcPtr) (int, int); //I use external function there
funcPtr p;
Utils* fptr;
public:
int pricefunc(){
addprice = (fptr->*p) (t,price);
}
Paper(int n, unsigned int pr):PaperQueue(n){
...
p=&Utils::commonpricefunc;
}
void Put(int a){
...
}
...
}
class Bank{
...
void Buy(Paper &p){
(/*this function modifies many parameters in 'p'*/)
...
}
...
}
int main(){
Bank B;
int pn=5;
/* ? */ const Paper p[pn] = {{5,15},{5,15},{5,15},{5,15},{5,15}}; /* ? */
int paperloop=0;
...
p[paperloop].Put(p[paperloop].addprice);
B.Buy(p[paperloop]);
...
Điều đó mang lại cho tôi rất nhiều lỗi (với pricefunc(), Đặt(), Mua(), .. .), hoặc chỉ "đối tượng có kích thước biến 'p' có thể không được khởi tạo". Có cách nào để làm cho mảng này hoạt động không? (Tất cả mọi thứ hoạt động tốt nếu không muốn nói để vượt qua bất kỳ thông số để xây dựng!)
'** const Giấy p [pn]'? – iammilind
Tôi cần phải tạo một mảng, một cái gì đó như 'Giấy (p [pn]) (5,25)' hoặc một cái gì đó ... Mỗi nhà xây dựng nên nhận các tham số này và 'p [i]' không nên là đối tượng chỉ đọc . – Slowpoke
Đó chỉ là thẻ đậm bên trong mã. – Slowpoke