私は自分の文字列クラス(DinString
)を持っていますが、何も特別なものはありません。私が思っていた は、あなたがあなたのために、この変換を行うためのコンストラクタを定義することができ、この文字列を暗黙的に文字列にキャスト
DinString a= "Helo World";
bool Func(DinString string);
Func("test");
私は自分の文字列クラス(DinString
)を持っていますが、何も特別なものはありません。私が思っていた は、あなたがあなたのために、この変換を行うためのコンストラクタを定義することができ、この文字列を暗黙的に文字列にキャスト
DinString a= "Helo World";
bool Func(DinString string);
Func("test");
ような何かを行うことが可能である:
class DinString {
DinString(const char *string) {
// do something useful here
}
};
DinString a= "Helo World";
は(外見にもかかわらず)の割り当てではありませんので、これは動作し、実際に書くことと等価ですDinString a("Hello World");
はい入力としてconst char *
あなたのクラスの変換コンストラクタを提供します。
DinString::DinString(const char *);
はい、あります。単純に適切な(!非explicit
)コンストラクタを実装:
class DinString {
public:
DinString(const char *s) {
// ...
}
};
あなたが「連鎖」このような複数のコンストラクタた場合、これは動作しませんのでご注意ください。たとえば、次のようなは機能しません。:
class DinString {
public:
DinString(const char *s) {
// ...
}
};
class FooString {
public:
FooString(const DinString &) { }
};
void f(const FooString &) { }
f("hello"); // doesn't call FooString(DinString("hello!")); !