2016-10-21 3 views
-1

私はちょうどC++を使い始めたので、この質問はおそらくnoobの質問になるでしょう。しかし、私が間違っていることを見つけることはできません。私が取り組んでいるプロジェクトは学校の課題です。この割り当てでは、生ポインタのみを使用できるので、生ポインタがどのように機能するかを調べます。生ポインタを持つベクトルのオブジェクトのプロパティにオブジェクトを割り当てる方法は?

これらの生ポインタは私にいくつかの問題をもたらしました。これらのポインタは、私にエラーを与えた: 'RoomからRoomへの適切な変換機能は存在しない'。

このエラーがどのように発生したのかを説明するために、私が書いたコードを削除してみます。

class Level 
{ 
private: 
    Room _startRoom; 
    vector<vector<Room>> _rooms; 
}; 

class Room 
{ 
public: 
    Room *North; 
    Room *East; 
    Room *South; 
    Room *West; 
}; 

私はLevelという名前のクラスを持っています。これは、ベクトル内にベクトルを持つクラスであり、お互いの隣に部屋をきれいに印刷することができます。すべての部屋が接続されているわけではないので、私は部屋の方向を与えました - 他の部屋との接続のプロパティ。しかし、部屋間の接続を生成しようとすると、_rooms [y] [x] .Southを_rooms [y + 1] [x]に設定します。私はエラーが発生しました: 'RoomからRoomへの適切な変換機能はありません'。

なぜこのエラーメッセージが表示されるのでしょうか?すべての助けに感謝します。

答えて

0

_rooms[y + 1][x]は、Roomインスタンスであり、ルームへのポインタではありません。無関係な注記で

_rooms[y][x].South = &_rooms[y+1][x]; 

:それへのポインタを取得するには、アドレス演算子&を使用する必要があなたのLevelオブジェクト内のベクトルを埋めるために覚えていますか?

+0

さて、私はそれらを初期化しましたが、私は可能な限りteコードを問題に集中させようとしていたからです。それで私はその部分を残しました:p。変数が動作する前にアンパサンドを配置していただきありがとうございます。しかし、なぜあなたはポインタへの参照を置くことができますか? – user3473161

関連する問題