【发布时间】:2012-11-11 10:50:04
【问题描述】:
我已阅读有关解决方案 const A a[3] = { {0,0}, {1,1}, {2,2} }, 但在我的程序中 const 无法使用:
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]);
...
这给了我很多错误(使用 pricefunc()、Put()、Buy()、...),或者只是“可能未初始化可变大小的对象‘p’”。有没有办法让这个数组工作? (如果不向构造函数传递任何参数,一切正常!)
【问题讨论】:
-
我需要创建一个数组,比如
Paper (p[pn])(5,25)之类的......每个构造函数都应该接收这些参数,而p[i]不应该是只读对象。 -
那只是代码中的粗体标记。
标签: c++ arrays class parameters constructor