从预定义类型转换为自己的CMyString

时间:2012-11-06 09:37:21

标签: c++ visual-c++

假设我有一个名为dummy的函数,其定义如下:

void dummy(CMyString& mystr)
{
   mystr.print(); //show
}

CMyString将是我自己使用字符数组的字符串实现。

int main()
{
   dummy("This is a test!");
   return 0;
}

我想要打印出以下程序:“这是一个测试!”。 这可能吗?

2 个答案:

答案 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
  }
};