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

Passing non-static data members as default arguments to methods

本文关键字:默认 参数传递 方法 静态 数据成员      更新时间:2023-10-16

我的类具有在各种情况下可能有用的方法,因此我希望它们独立于参数。代码:

.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){...}

我应该如何宣布它?我尝试的一切都给了我编译错误。

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

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

超负荷解决方案会处理细节。用户要么通过输出参数,要么您通过类成员。

如果我正确理解您(涉及很多猜测(,我会说您应该将UltimateNumber类的实现与零删除功能的逻辑实现分开。沿着:

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

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