我正在尝试为我的函数原型返回一个指向数组的指针。
class NAV
{
string date;
float nav;
public:
NAV(const string&);
};
const int HistorySize = 300;
class MutualFund
{
string ticker;
NAV* history[HistorySize];
public:
MutualFund(const string& ticker_, const string& historyFile);
~MutualFund();
NAV** getArray() const{return history;}
void report() const;
};
对于NAV ** getArray()const {return history;},我收到编译错误:
错误:从'NAV * const *'无效转换为'NAV **'[-fpermissive]
有什么想法吗?
答案 0 :(得分:4)
在NAV** getArray() const{return history;}
const
中意味着程序员承诺调用此函数不会导致MutualFund
状态的更改。通过返回非常量指针NAV**
,您可以通过使用返回的指针开启状态更改的可能性。编译器不允许这样做,并告诉您它只能返回指向常量数据的指针:NAV* const*
。
答案 1 :(得分:0)
你的getter是一个const方法,因此在执行期间,所有数据成员也被认为是const。这就是转换错误说它从const转换为非const的原因,因为你的返回值是非const的。