在下面的代码示例中,我想使用函数std::string A::str_
的A
返回值(可能返回NULL
)或const char*
. 但我不喜欢Func()
被调用两次的事实。
#include <iostream>
const char* Func()
{
char* p = NULL;
// Assign p: may be NULL or non-NULL
return p;
}
class A
{
public:
A() : str_( Func() ? Func() : "NULL" ) {}
std::string str_;
};
int main( int argc, char* argv[] )
{
A a;
std::cout << a.str_ << std::endl;
return 0;
}
我想做这样的事情:
A() : str_( ( const char*& tmp = Func() ) ? tmp : "NULL" ) {}
但是以这种方式使用临时变量——甚至是引用来延长它们的寿命——似乎是非法的(根据我目前的理解)。
是否有 C++03 语法允许A::str_
在初始化列表中进行初始化,只调用Func()
一次,并且不使用全局/静态变量?如果有使用临时变量的解决方案,我想学习它的语法。