次のコード例では、std::string A::str_
inA
の初期化子リストを、関数からの戻り値 ( を返す可能性があるNULL
) またはconst char*
. しかし、2回呼び出されるのは好きではありません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" ) {}
しかし、一時変数を使用して、寿命を延ばすために参照であっても、この方法では違法に思えます(私の現在の理解によると)。
グローバル/静的変数を使用せずに、1 回だけA::str_
呼び出して、初期化子リストでの初期化を可能にする C++03 構文はありますか? Func()
一時変数を使用する解決策があれば、その構文を学びたいです。