我正在學習使用Visual Studio 2015 ++的C++C++通過用戶輸入指向對象的向量
我正在研究它,我不能通過一些東西。也許你可以給我更好的見解。
我學到了關於類,結構,數組和函數的一些東西。
我想創建一個程序,使用幾名球員,但是可以從2-4變化(例如:
class Player{
public:
Player(){
hp=5;
mana=10;
alive=false;
};
int hp;
int mana;
bool alive;
};
int _tmain(int argc, _TCHAR* argv[])
{
// data here //
retry:
cin >> numberofPlayers;
if (numberofPlayers < 2 || numberofPlayers>4)
{
cout << "That's Impossible! Don't mock me!" << endl;
goto retry;
}
else
{
cout << "Great!" << endl;
}
後,所以
,我想創建指針到對象的載體中將存儲在不同的球員變量
如:
這裏我的問題開始:)
Player* pointerplayer = new Player();
vector<Player*> vectorPlayer;
Player* pointerplayer = new Player();
for (int i = 0; i < numberofPlayers; i++)
{
vectorPlayer.push_back(new Player());
cout << vectorPlayer[i] << endl;
}
我的問題是當我嘗試看到輸出時,我猜測指針的地址。
01639B40
01643F98
01643C80
和我所要的輸出是這樣的:
1
2
3
我知道,我沒有做它proprely,但事情是逃避我,我不能夠看到它proprely 。
因爲我想創建2-4個玩家,這是基於用戶輸入的。併爲每個玩家創建一個Player(),其中包含每個玩家的所有變量。 (1,2,3,4)的輸出取決於數字。
如果你想看到一個數字,打印'i'。但是,爲什麼你使用了一個指針向量而不是一個向量的玩家? – melpomene
另一方面,1)'_tmain'和'_TCHAR'是Microsoft的擴展,通常不是可移植的。如果將來使用不同的編譯器(例如GCC或Clang),它們可能不起作用。 2)[你可以在沒有'goto'的情況下創建循環(http://ideone.com/e5nAf9)這通常是首選,因爲它們更容易跟蹤(條件告訴它是重新循環還是停止, 'continue'基本上是'goto condition;','break'基本上是'goto next_line_after_loop;')。 –
是的,我已經搜索過,也許更好?但我認爲我可以設法在使用指針的內存管理方面更高效,並在堆中正確分配它們。 @melpomene –