2

次のように定義されたダミーという関数があるとします。

void dummy(CMyString& mystr)
{
   mystr.print(); //show
}

CMyString は、文字の配列を使用した文字列の独自の実装です。

int main()
{
   dummy("This is a test!");
   return 0;
}

次のプログラムを出力してほしい: "This is a test!". これは可能ですか?

4

2 に答える 2

3

explicitはい、そうです。非変換コンストラクターをCMyString次のように提供する必要があります。

class CMyString
{
public:
    CMyString(const char* x); 
    //.....
};

もちろん、CMyString::printメソッドを実装します。この後、パラメータを次のように変更する必要があります

void dummy(const CMyString& mystr)

print(そしてメソッドを としてマークしconstます)一時を非定数参照にバインドできないためです。

于 2012-11-06T09:39:06.263 に答える
1

そうです。CMyStrings の配列charまたはへのポインタをchar唯一の引数として取るコンストラクタを定義するだけです。そのようです:

class CMyString
{
public:
  CMyString(const char* str)
  {
    // Initialise CMyString with str
  }
};
于 2012-11-06T09:40:01.430 に答える