私は非常にC++に新しいですので、私は概念を理解していますが、私はポインタに関する多くの問題があります。問題は、私は私のメインでのポインタのベクトルを作っていますということです。オブジェクトを指すポインタのコレクション、明確化
/Aquarium.cppメイン:あなたは私はあなたがに魚を見つけることができる場所を追加見ることができるように
using namespace std;
#include "EntityControl.h"
#include <Windows.h>
int main() {
EntityControl entity;
vector<Fish*> fishVector;
Fish q;
cout << "fish q = " << &q << endl;
fishVector.push_back(&q);
entity.movementController(&fishVector);
cout << &fishVector << endl;
system("pause");
return 0;
}
fishVectorを使って、私はEntityControlクラスのオブジェクトで何かしたいと思います。しかし、私はこれを行う方法がわかりません、私はforループでそれを取得しようとしましたが、結果を出そうとすると、場所はmain.cppの魚とは異なります。 EntityControl.cpp
#include "EntityControl.h"
void EntityControl::movementController(std::vector<Fish*> * fishInputVector)
{
unsigned int x = rand() % xContainer;
unsigned int y = rand() % yContainer;
unsigned int z = rand() % zContainer;
//i.changePosition(x, y, z);
}
EntityControl::~EntityControl()
{
}
はStackOverflowの上でこののいくつかの記事がありましたが、私は答えを理解していませんでした。私はもう少し助けが必要だと思った。あなたがそれを簡単に説明できるなら、私はとても感謝しています。
問題解明:のベクトル(または十分である任意のコレクション)に魚オブジェクトのメモリ・ロケーションを追加、メモリ位置を受信し、オブジェクトを扱う主とメモリ位置点EntityControl.cpp
で余分な質問: 私はあなたがこれを説明することができ、
void Fish::changePosition(int addX, int addY, int addZ)
{
xLocation = addX;
yLocation = addY;
zLocation = addZ;
//std::cout <<"VALUE ="<< getX();
}
が正常に動作するよう、私はクラス内の実際の変数の値を変更するには、ポインタを必要と思ったけど? (X、Y、Zの位置は魚クラスのプライベート・グローバル変数です)
私はポインタをした場合、私はそれが ポインティングだとオブジェクト/変数を削除する必要がありますか?それは記憶に残っていますか?
私に役立つ情報がありますか?
誰も私を助けることができる場合は、どうもありがとうございました 最後のノート。この問題は私を何時間も夢中にさせてくれました。
はい、おそらくその質問を削除する必要がありますので、質問とは関係ありません。テスト目的のためだけだった – Lloyd
私はそれがブロックコードから削除されるべきメソッドに送信するのと同じベクトルであればテストしていましたが、とにかく複数の魚がベクターに追加されます1匹の魚をそこに送ってください。 あなたのコメント – Lloyd
ありがとうございます。あなたが書いた関数は 'Fish'クラス(' Fish :: ')の一部であるため、' Fish'のデータメンバーを変更することができます。さもなければ私的なデータメンバーはむしろ意味がないでしょう。データメンバーにアクセスまたは変更するためのポインタは必要ありません。あなたはどこからそれを手に入れましたか?データメンバ名参照は、メンバ関数が呼び出されたインスタンスのデータメンバを自動的に参照します。 – user4407569