我對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()
{
}
有這個計算器上的幾個帖子,但我不明白的答案。我以爲我需要一些額外的幫助。所以,如果你能儘可能簡單地解釋它,那麼我會非常感激。
問題澄清:添加魚對象的存儲位置,以在一個載體(或足夠的任何集合)主然後接收所述存儲位置和與所述對象的工作,該存儲器位置指向EntityControl.cpp
額外的問題: 我認爲我需要一個指針來改變一個類的實際變量的值,但是,
void Fish::changePosition(int addX, int addY, int addZ)
{
xLocation = addX;
yLocation = addY;
zLocation = addZ;
//std::cout <<"VALUE ="<< getX();
}
似乎很好地工作,你能解釋一下嗎? (X,Y,Z位置是在魚類中的私有全局變量)
如果我做一個指針,我應該刪除的對象/變量,它的 指向?它留在內存中嗎?
有什麼好的資源可以幫助我嗎?
最後一個音符 如果有人能幫助我,非常感謝你。這個問題一直讓我瘋狂幾個小時。
是的,應該刪除那個cout,因爲它不需要處理這個問題。它只是用於測試目的 – Lloyd
我正在測試它是否與我發送到應該從代碼塊中刪除的方法相同的向量,反正會有多條魚添加到向量中,這就是爲什麼我不僅送一條魚到那裏。 感謝您的評論 – Lloyd
關於額外的問題:你寫的函數是'Fish'類('Fish ::')的一部分,所以它可以修改'Fish'的任何數據成員,即使是私有成員。否則,私人數據成員將是毫無意義的。您不需要指針來訪問或修改數據成員。你從哪裏得到那個的?數據成員名稱引用會自動引用調用成員函數的實例的數據成員。 – user4407569