我有自己的字符串类(DinString
),没什么特别的。
我想知道可以做这样的事情
DinString a= "Helo World";
bool Func(DinString string);
Func("test");
答案 0 :(得分:6)
是的,确实如此。只需实现一个适当的(非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!")); !
答案 1 :(得分:3)
您可以定义构造函数来为您执行此转换:
class DinString {
DinString(const char *string) {
// do something useful here
}
};
这是有效的,因为DinString a= "Helo World";
不是作业(尽管出现),实际上相当于写作DinString a("Hello World");
答案 2 :(得分:1)
是为您的班级提供转化构造函数,const char *
作为输入。
DinString::DinString(const char *);