2014-10-28 35 views
-2

我想做一个变量,将持有类指针对象。保存类指针对象的值的变量?

这是我的两个带有构造函数值的类指针对象。

Goblin *g = new Goblin(6, 6, 3, 8, 2,1); 
Barbarian *b = new Barbarian(6, 6, 0, 12, 2, 2); 

我想创建一个变量,将举行这样的数据,所以我可以有一个玩家选择他想要什么动物是和变量会拥有这些数据,所以我可以用我的功能。

这是我想使用的函数的标题。

void battle(Creature *a, Creature *d, std::string nameA, std::string nameD); 

这里是被称为在main()

battle(g, b, playerName, opponentCreature); 

值克功能,B,是我想用我的新的变量来代替的东西。 我试过使用字符串和int类型的变量,但那不起作用。有没有人有任何想法,我可以做到这一点?

+0

这是不是很清楚你要完成什么。现在,你有一个“哥布林”和“野蛮人”在做战斗,你想要发生什么? – Chad 2014-10-28 22:28:24

+0

我想要一个可以容纳地精或野蛮人值以及更多生物的变量,并且将哪个生物分配给该变量将取决于用户选择的内容。这样,当战斗功能被调用而不是只有地精或蛮族战斗时,它将基于用户在我没有发布的菜单选择中选择的内容。 – 2014-10-28 22:42:19

+0

听起来像是派生和虚拟功能的工作。 – EJP 2014-10-28 22:45:58

回答

0

我通过使用这两行来得到它的工作。

Creature *personCode = 0; 

Creature *opponentCode = 0; 

下面是他们如何绑定到我的程序。

std::cout << "Choose your creature." << std::endl; 

std::cout << "\n1). Goblin." << std::endl; 
std::cout << "2). Barbarian." << std::endl; 

std::cin >> choice; 
std::cin.clear();//clear the input 
std::cin.ignore(100, '\n');//ignore 100 char or up to new line. 

switch (choice) 
{ 
    case 1:// std::cout << "Goblin" << std::endl; 
     playerCreature = "Goblin"; 
     personCode = new Goblin(6, 6, 3, 8, 2, 1); 
     break; 

    case 2:// std::cout << "Barbarian" << std::endl; 
     playerCreature = "Barbarian"; 
     personCode = new Barbarian(6, 6, 0, 12, 2, 2); 
     break; 
} 

std::cout << "Choose your opponent" << std::endl; 

std::cout << "\n1). Goblin." << std::endl; 
std::cout << "2). Barbarian." << std::endl; 

std::cin >> choice; 
std::cin.clear();//clear the input 
std::cin.ignore(100, '\n');//ignore 100 char or up to new line. 

switch (choice) 
{ 
case 1: //std::cout << "Goblin" << std::endl; 
    opponentCreature = "Goblin"; 
    opponentCode = new Goblin(6, 6, 3, 8, 2, 1); 
    break; 

case 2: //std::cout << "Barbarian" << std::endl; 
    opponentCreature = "Barbarian"; 
    opponentCode = new Barbarian(6, 6, 0, 12, 2, 2); 
    break; 
} 

这里是现在调用的函数。

battle(personCode, opponentCode, playerName, opponentCreature);