将非静态数据成员作为方法的默认参数传递

时间:2018-02-18 16:16:21

标签: c++

我的类有各种方法可用,因此我希望它们与参数无关。代码:

·H

std::string integerPart;
std::string remainderPart;
void removeZeroesFromBeginning(std::string &str = integerPart);
void removeZeroesFromEnd(std::string &str = remainderPart);

的.cpp

void UltimateNumber::removeZeroesFromBeginning(string &str){...}
void UltimateNumber::removeZeroesFromEnd(string &str){...}

我该如何申报?我试过的一切都给了我编译错误。

2 个答案:

答案 0 :(得分:5)

解决方案是重载,而不是默认函数参数。

std::string integerPart;
std::string remainderPart;

void removeZeroesFromBeginning(std::string &str);
void removeZeroesFromBeginning() {
  removeZeroesFromBeginning(integerPart);
}

void removeZeroesFromEnd(std::string &str);
void removeZeroesFromEnd() {
  removeZeroesFromEnd(remainderPart);
}

重载解析负责细节。用户传递输出参数,否则传递类成员。

答案 1 :(得分:2)

如果我理解正确(涉及大量猜测),我会说你应该将UltimateNumber类的实现与零删除功能的逻辑实现分开。有点像:

class MyFancyNumberManipulations {
public:
static void removeZeroesFromBeginnging(std::string& v);
...
};


void UltimateNumber::removeZeroesFromBeginning(string& str) {
  MyFancyNumberManipulations(integerPart);
}