[英]Cast char* to my string implicitly
我有自己的字符串類( DinString
),沒什么特別的。 我想知道是否可以做這樣的事情
DinString a= "Helo World";
bool Func(DinString string);
Func("test");
是的。 只需實現適當的(非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!")); !
您可以定義一個構造函數來為您執行此轉換:
class DinString {
DinString(const char *string) {
// do something useful here
}
};
之所以DinString a= "Helo World";
因為DinString a= "Helo World";
不是一個賦值(盡管出現),實際上等效於編寫DinString a("Hello World");
是的,為您的類提供一個轉換構造函數,將const char *
作為輸入。
DinString::DinString(const char *);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.