Fl_Widget有下一个构造函数:
Fl_Widget(int x,int y,int w,int h,const char * label = 0L)
我如何发送char *而不是const char *?我只想在构造函数中使用我的char Tmp [255]变量。
答案 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"){}