いつも拝見させて頂いております。
CではなくC++のお話で恐縮ですが、どうか宜しくお願いします。
質問:
以下のように関数を作っておきます。
// 1) std::string func( const std::string& s ) { return ( s + "、こっち" ); } // 2) void func( char* s ) { strcat( s, "、やっぱこっち" ); }そして以下のように呼び出しをします。
char ss[64];
strcpy( ss, "呼ばれるのは" );
std::string str = func( ss );
当然コンパイルエラーです。 char* を引数にとる func() の戻り値の
型は void なのですから。
ですが、2) が存在しなければ上記の呼び出しはエラーではありません。
std::string str = func( ss );
なら 1) が呼ばれ、
func( ss );
なら 2) が呼ばれるようにしたいのですが、なにかいい手はないでしょうか?
これは雑談ですのでお気軽にいろんなお話が聞きたいです。
いい手が無いなら無いで
1) を呼び出すときは
std::string str = func( std::string( ss ) );
とすればいいだけなのですから。本気の本気で困っての質問ではないので
「雑談」にしました。