2014-12-07 65 views
0

我有一个名为Enemy的类,它具有三个构造函数。它有一个默认值,一个带有统计数据和一个项目,另一个带有统计数据。我想要做的是制作一个能够检测敌人是否拥有物品的功能。我想我可以很容易地创建另一个参数,其中包含的项目数量的整数值,但我真的希望能够检查项目参数,以便我不需要另外构造参数。如何检查构造函数是否在C++中具有特定参数

另外,我想我也可以只放在一个参数在我的项目类,要么是1或0,并且将允许检查,以确定是否一个项目存在或不存在。

我希望能够检测的项目的原因是,如果敌人确实有一个,序列发生在那里它会告诉你该项目,然后让你把它捡起来或不选择。

+1

你能发布你的相关代码吗? – Chrismas007 2014-12-07 05:32:39

+1

不知道为什么你甚至想要这样做,而不是仅仅让一个成员指出敌人是否有物品。 – 2014-12-07 08:31:36

回答

0

任务是也许不是非常复杂的,只要你总是可以忽略的默认值(例如为Nothing)指定参数。我们可以省略的参数应该是最后一个,或者前面的省略。所以,你所描述的是在相对比较容易千篇一律:

class Stats 
{ 
    public: 
     // some stat methods and data 
}; 


enum Item 
{ 
    Nothing, 
    Something1, 
    Something2, 
    Something3 
}; 


class A 
{ 
    explicit A(Item item = Nothing); 
    A(const Stats& stats, Item item = Nothing); 
}; 


A::A(Item item) 
{ 
    // in both constructors just recognize if the item is Nothing 
    if (item == Nothing) 
    { 
     // default, no item 
    } 
    else 
    { 
     // deal with an item 
    } 
} 

所以,你的客户端代码将能够做到:

// we imply item != Nothing here 
A one;     // default 
A two(item);   // with an item 
A three(stats);  // with stats 
A four(stats, item); // with stats and an item 

当然,你应该以某种方式指定项目和统计。

相关问题