我的类有各种方法可用,因此我希望它们与参数无关。代码:
·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){...}
我该如何申报?我试过的一切都给了我编译错误。
答案 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);
}