我可以在类的定义中的头文件中声明一个字符串吗?

Ros*_*oss 9 c++

是否可以在类的定义中的头(.h)文件中声明一个字符串?

当我想设置默认值时int,我会:

 class MyClass
 {
     static const unsigned int kDATA_IMAGE_WIDTH =  1024;
Run Code Online (Sandbox Code Playgroud)

有没有办法对string对象做同样的事情?

 class MyClass
 {
      static const string kDEFAULT_FILE_EXTENSION = "png"; // fail
Run Code Online (Sandbox Code Playgroud)

我知道我可以用#define......

 #define kDEFAULT_FILE_EXTENSION "png"
Run Code Online (Sandbox Code Playgroud)

谢谢

编辑:添加它在类定义中.更新的例子.

Bil*_*eal 13

从您给出的错误消息(强调我的):

错误:非整数类型'const std :: string'的静态数据成员的类内初始化无效

您可以在头文件中执行此操作,但不能在类中执行此操作.

那是:

class MyClass
{
    static const std::string invalid = "something";
};
Run Code Online (Sandbox Code Playgroud)

是无效的,但是

static const std::string valid = "something else";
Run Code Online (Sandbox Code Playgroud)

已验证.

如果您希望static只是该类的成员,请执行以下操作:

//Header
class MyClass
{
    static const std::string valid;
};


//Implementation (.cpp) file

const std::string MyClass::valid = "something else again";
Run Code Online (Sandbox Code Playgroud)

只能使用"= constant "语法初始化静态const整数类变量.