有没有办法强制传递参数作为参考?
Is there any way force to pass an argument as reference?
作为上面的问题,我想让下面的代码工作。
应将多种类型的字符串参数传递给函数。
// declaration, maybe in .h file
int matches(std::string& s1, std::string& s2, std::string& s3);
inline int matches(std::string s1, std::string s2, std::string s3) {
return matches((std::string&) s1, (std::string&) s2, (std::string&) s3); // here i can't figure out
}
// implementation
int matches(std::string& s1, std::string& s2, std::string& s3) {
...
}
int main() {
std::string foo("foo"), bar("bar"), baz("baz");
matches("foo", "bar", "baz" );
matches( foo, bar, "baz" );
matches( foo, "bar", "baz" );
...
matches("foo", bar, "baz" );
matches( foo, bar, baz );
return 0;
}
我用谷歌搜索了几分钟,但找不到解决方案。
我需要放弃这个问题吗?
如有任何建议或回复,我们将不胜感激。
感谢 @RuslanTushov,我找到了解决方案。
我post我自己的答案在这里给任何有同样问题的人。
// implementation
int matches(const std::string& s1, const std::string& s2, const std::string& s3) {
...
}
int main() {
std::string foo("foo"), bar("bar"), baz("baz");
matches("foo", "bar", "baz" );
matches( foo, bar, "baz" );
matches( foo, "bar", "baz" );
...
matches("foo", bar, "baz" );
matches( foo, bar, baz );
return 0;
}
作为上面的问题,我想让下面的代码工作。
应将多种类型的字符串参数传递给函数。
// declaration, maybe in .h file
int matches(std::string& s1, std::string& s2, std::string& s3);
inline int matches(std::string s1, std::string s2, std::string s3) {
return matches((std::string&) s1, (std::string&) s2, (std::string&) s3); // here i can't figure out
}
// implementation
int matches(std::string& s1, std::string& s2, std::string& s3) {
...
}
int main() {
std::string foo("foo"), bar("bar"), baz("baz");
matches("foo", "bar", "baz" );
matches( foo, bar, "baz" );
matches( foo, "bar", "baz" );
...
matches("foo", bar, "baz" );
matches( foo, bar, baz );
return 0;
}
我用谷歌搜索了几分钟,但找不到解决方案。
我需要放弃这个问题吗?
如有任何建议或回复,我们将不胜感激。
感谢 @RuslanTushov,我找到了解决方案。
我post我自己的答案在这里给任何有同样问题的人。
// implementation
int matches(const std::string& s1, const std::string& s2, const std::string& s3) {
...
}
int main() {
std::string foo("foo"), bar("bar"), baz("baz");
matches("foo", "bar", "baz" );
matches( foo, bar, "baz" );
matches( foo, "bar", "baz" );
...
matches("foo", bar, "baz" );
matches( foo, bar, baz );
return 0;
}