いつも拝見させて頂いております。
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 ) );
とすればいいだけなのですから。本気の本気で困っての質問ではないので
「雑談」にしました。