3

我有一个带有以下签名的方法的类:

void print(unsigned char *word);

我需要设置""为默认值word,我该怎么做?

我尝试了明显的void print(unsigned char *word="");但我得到了以下错误:

error: cannot initialize a parameter of type
  'unsigned char *' with an lvalue of type 'const char [1]'
    void print(unsigned char *word="");

既然我不能word用字符串文字进行初始化,我应该由谁来做呢?

4

4 回答 4

7

您说这是适用于打印的“前缀”参数。

答案是你应该做参数const,停止在函数内部对它做任何改变,然后""作为默认参数使用:

void print(const char* prefix = "")
于 2013-11-28T12:16:25.920 回答
6

尝试

unsigned char empty[] = { 0 };

void print(unsigned char* word = empty )
{
  ...
}
于 2013-11-28T12:10:54.517 回答
4

""产生一个 的数组const char,因此您想要一个 的数组或指向 的指针NON-const unsigned char,类型和 cv 限定都不适合。

另请注意,在 C++char != signed charchar != unsigned char.

可能你的意思是void print(const char *word);,但可能你想要的只是print(std::string const &)or print(std::string)

于 2013-11-28T11:58:47.673 回答
0
 void print();
 void print(unsigned char* prefix);
 // in cpp file:
 void print(){
   unsigned char temp = 0;
   print(&temp);
 }

这提供了两个重载,一个带有 0,一个带有一个参数。

零参数一具有它提供给一参数一的一些自动存储存储器。请注意,只有指针下的单个字节对读/写有效:没有长度,print无论如何都无法知道任何不同。

虽然没有数组,但单个元素不需要数组。

于 2013-11-28T12:57:59.297 回答