0

私は次のクラスを持っています

ファイルNode.c

std :: vector<NodeConnection*>* Node :: GetConnections() const
{
    const std :: vector <NodeConnection*> * output = &this->connections;
    return output;
}

ファイルNode.h

class Node {
    private:
        std :: vector <NodeConnection*> connections;
    public:
        std :: vector <NodeConnection*>* GetConnections() const;
};

vector connectionsをconst ポインターに変換しようとしています。ただし、エラーが発生し続けます

[Error] invalid conversion from 'const std::vector<NodeConnection*>*' to 'std::vector<NodeConnection*>*' [-fpremissive]

返すことができる定数ポインターに変換するにはどうすればよいですか?

4

1 に答える 1

2

GetConnectionsとしてマークされてconstいますが、非 const ポインターを返すためです。

代わりに、値、const ポインター、または (私のアドバイス) const 参照のいずれかで返す必要があります。

const std::vector<NodeConnection*>& GetConnections() const;

メンバー関数を作成constするということは、オブジェクトのメンバー変数を変更しない (そして実際には許可されていない) ことを意味します。非 const ポインターを返すと、呼び出し元が返された値を変更して、関数の constness と競合する可能性があります。

エラーの原因となっている行はreturn、 const ポインターを返し、コンパイラーがそれを非 const ポインターに変換する必要がある場合です。

于 2013-10-20T11:31:32.603 に答える