char *和const char *之间的转换

时间:2014-10-23 10:42:11

标签: c++ fltk

Fl_Widget有下一个构造函数:

  

Fl_Widget(int x,int y,int w,int h,const char * label = 0L)

我如何发送char *而不是const char *?我只想在构造函数中使用我的char Tmp [255]变量。

2 个答案:

答案 0 :(得分:3)

C ++允许为任何类型T*隐式转换const T*T,因此在您的情况下,您只需将参数传递给函数。

此外,如果您拥有Fl_Widget构造函数,那么您应该将label的默认值从0L更改为nullptr,或0如果使用的话C ++ 03或更早版本。

(要从const T*转换为T*,需要const_cast可以导致未定义的行为。)

答案 1 :(得分:0)

如果您的ctor目前看起来像这样,foo是您的班级:

foo::foo() : FL_Widget(13, 13, 13, 13, Tmp){
    char Tmp[255]{"blah blah blah"};
}

这不合法。您不能将参数传递给类ctor中发生的父ctor,这是因为父ctor在您的类ctor被调用之前发生。

您可以这样做:foo::foo() : FL_Widget(13, 13, 13, 13, "blah blah blah"){}