次のように定義されたダミーという関数があるとします。
void dummy(CMyString& mystr)
{
mystr.print(); //show
}
CMyString は、文字の配列を使用した文字列の独自の実装です。
int main()
{
dummy("This is a test!");
return 0;
}
次のプログラムを出力してほしい: "This is a test!". これは可能ですか?
次のように定義されたダミーという関数があるとします。
void dummy(CMyString& mystr)
{
mystr.print(); //show
}
CMyString は、文字の配列を使用した文字列の独自の実装です。
int main()
{
dummy("This is a test!");
return 0;
}
次のプログラムを出力してほしい: "This is a test!". これは可能ですか?
explicit
はい、そうです。非変換コンストラクターをCMyString
次のように提供する必要があります。
class CMyString
{
public:
CMyString(const char* x);
//.....
};
もちろん、CMyString::print
メソッドを実装します。この後、パラメータを次のように変更する必要があります
void dummy(const CMyString& mystr)
print
(そしてメソッドを としてマークしconst
ます)一時を非定数参照にバインドできないためです。
そうです。CMyString
s の配列char
またはへのポインタをchar
唯一の引数として取るコンストラクタを定義するだけです。そのようです:
class CMyString
{
public:
CMyString(const char* str)
{
// Initialise CMyString with str
}
};