返回指向数组的指针

时间:2016-03-06 04:38:40

标签: c++ arrays pointers

我正在尝试为我的函数原型返回一个指向数组的指针。

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]

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

NAV** getArray() const{return history;} const中意味着程序员承诺调用此函数不会导致MutualFund状态的更改。通过返回非常量指针NAV**,您可以通过使用返回的指针开启状态更改的可能性。编译器不允许这样做,并告诉您它只能返回指向常量数据的指针:NAV* const*

答案 1 :(得分:0)

你的getter是一个const方法,因此在执行期间,所有数据成员也被认为是const。这就是转换错误说它从const转换为非const的原因,因为你的返回值是非const的。