2

文字列クラスと同じ方法でc文字列を割り当てることができるはずのクラスを作成しています:

string a = "My string";

私が抱えている問題はoperator=( char operand )、この目的に使用されているのではないように見えることです。だから私の質問はこれです: 代わりに何が使われていますか?

私が持っているもの:

class exstring
{
    ...

    public:
    exstring& operator=( char* );

    ...
};

...

int main()
{
    exstring test = "test";
}

これにより、次のことが得られます。

main.cpp:9:22: error: conversion from ‘const char [19]’ to non-scalar type ‘std::exstring’ requested

何か案は?

4

1 に答える 1

11

あなたはoperator =ここであなたを呼んでいません。代入と初期化の違いを学ぶ必要があります。あなたがしているのは初期化であり、あなたはあなたが提供しているパラメーターを受け取るコンストラクターを必要とします。言い換えると:

extring test = "test";

まったく同じです:

extring test("test");

後者の場合を除いて、コンストラクターは明示的である可能性がありますが、前者ではそうではありません。

于 2012-05-07T16:32:24.160 に答える