[英]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.