我正在学习使用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 –