我正在开发一个具有以下签名的方法的类:
operator const std::string & () const
它被记录为“强制转换为字符串运算符”。 我想知道如何有效地调用它。不幸的是以下表达式:
std::string(foo)
产生此错误:
some_test.cpp:13:41: error: no matching function for call to'
std::basic_string<char>::basic_string(Foo (&)(std::string))'
考虑foo
的类型为Foo
,声明并实例化为Foo foo(std::string(filename))
作为C ++的前身,这让我有点困惑。这有什么暗示?
答案 0 :(得分:1)
foo
的类型为Foo
,声明并实例化为Foo foo(std::string(filename))
这是一个函数声明,将filename
解释为函数参数的名称,相当于
Foo foo(std::string filename);
变量声明看起来像
Foo foo(filename);
或者,如果您需要显式转换(您可能不在此处)
Foo foo{std::string(filename)}; // C++11 or later
Foo foo = Foo(std::string(filename)); // historic dialects
答案 1 :(得分:0)
如果您对operator const std::string & () const
的用法提出疑问,则非常简单:当您需要转换为std::string
时,会使用此运算符。示例:
Foo foo(filename);
std::string s = foo; // uses the declared operator const std::string & () const