如何将一个对象的多个实例发送到一个函数中
How can I send multiple instances of an object into one function
我有一些像这样的代码
class Split
{
public:
Split(Hand *pcHand = NULL)
: phand(pcHand), phandsplit(pcHand)
{
}
int CardOne;
int CardTwo;
int CardThree;
void getCardOne(Hand & phand)
{
CardOne = phand.SendCOneToSplit();
std::cout << "Card One: " << CardOne << std::endl;
}
void getCardTwo(Hand & phandsplit)
{
CardTwo = phandsplit.SendCOneToSplit();
std::cout << "Card Two: " << CardTwo << std::endl;
}
void getCardThree(Hand & phandsplitTwo)
{
CardThree = phandsplitTwo.SendCOneToSplit();
std::cout << "Card Two: " << CardTwo << std::endl;
}
private:
Hand * phand;
Hand * phandsplit;
};
我想让它成为一个函数,而不是需要添加另一个函数,它只是对同一类的不同对象做完全相同的事情。有办法做到这一点吗?如果有的话,有人能给我指个方向吗?
只需向函数传递一个附加参数,该参数告诉您处理哪个类成员。
enum
{
CardOne, CardTwo, CardThree, //so on....
}CardNumber;
void getCard(Hand & phandsplitTwo, CardNumber card)
{
if(card == CardOne)
CardOne = phand.SendCOneToSplit();
else if(card == CardTwo)
CardTwo = phandsplit.SendCOneToSplit();
else if(card == CardThree)
CardThree = phandsplitTwo.SendCOneToSplit();
//....
}
注意:
我不知道为什么你命名你的方法为getXXXXX,他们实际上没有返回任何东西。也许,名称应该是setXXXXXX??
好吧,因为你的变量是公共的,你总是可以传入你想操作的:
void getCard(Hand& hand, int& card)
{
card = hand.SendCOneToSplit();
std::cout << "Card: " << card << std::endl;
}
然后像这样调用:
split.getCard(hand, split.CardOne);
当然,使用公共变量可能不是一个长期的解决方案,所以另一个选择是替换:
int CardOne;
int CardTwo;
int CardThree;
与数组:
int cards[3];
然后传入你想要的索引:
void getCard(Hand& hand, int ndx)
{
cards[ndx] = hand.SendCOneToSplit();
std::cout << "Card: " << cards[ndx] << std::endl;
}
如果关注性能,并且如果有许多"卡片类型";我会使用函数指针(即:方法指针)。
void (Split::*pfGetTheCard)(Hand & phand);
// Dynamically assign it to one of those:
pfGetTheCard = &Split::getCardTwo;
// And call it:
(cardobj.*pfGetTheCard)();
(pCardPtr->*pfGetTheCard)();
请注意,这可能不是合适的解决方案,因为这完全取决于您的设计,性能和维护问题。这只是我的主意!
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何仅为一个函数添加延迟
- 构造函数正在调用一个使用当前类类型的函数
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 如何创建函数管道,以便函数一个接一个地运行?
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 在c++中的复制构造函数/一个声明语句中的初始化的延续中使用chain方法
- C :基类调用自己的虚拟函数 - 一个反图案
- 如何在这个交换函数(一个单独的链表)中找到错误
- 两个相同的函数(一个使用模板模式,另一个不使用)
- 你怎么能一次给一个函数一个参数呢
- 为什么要做两个函数?(一个是非const,另一个是const)
- 当代码在其他地方使用时,如何保证函数一个接一个地被调用