假设我有一个名为dummy的函数,其定义如下:
void dummy(CMyString& mystr)
{
mystr.print(); //show
}
CMyString将是我自己使用字符数组的字符串实现。
int main()
{
dummy("This is a test!");
return 0;
}
我想要打印出以下程序:“这是一个测试!”。 这可能吗?
答案 0 :(得分:3)
是的,您只需要向explicit
提供非CMyString
转换构造函数:
class CMyString
{
public:
CMyString(const char* x);
//.....
};
当然,实现CMyString::print
方法。在此之后,您需要将参数更改为
void dummy(const CMyString& mystr)
(并将print
方法标记为const
),因为您无法将temp绑定到非const引用。
答案 1 :(得分:1)
当然可以。您只需要为CMyString
定义一个构造函数,该构造函数将char
的数组或指向char
的指针作为其唯一参数。像这样:
class CMyString
{
public:
CMyString(const char* str)
{
// Initialise CMyString with str
}
};