2

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

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

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

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

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

4

2 回答 2

3

是的,您只需要提供一个非explicit转换构造函数即可CMyString

class CMyString
{
public:
    CMyString(const char* x); 
    //.....
};

当然,实现该CMyString::print方法。在此之后,您需要将参数更改为

void dummy(const CMyString& mystr)

(并将print方法标记为const),因为您不能将 temp 绑定到非常量引用。

于 2012-11-06T09:39:06.263 回答
1

当然。您只需要定义一个构造函数CMyString,它将一个 s 数组char或一个指向的指针char作为其唯一参数。像这样:

class CMyString
{
public:
  CMyString(const char* str)
  {
    // Initialise CMyString with str
  }
};
于 2012-11-06T09:40:01.430 回答