繁体   English   中英

在c ++类中定义静态字符串变量

[英]define static string variable in c++ class

我有两个问题:

为什么这对于int变量是可能的:

foo.h中:

class foo{

     private:
        const static int a = 42;
};

但对于字符串变量,我需要这样做吗?

foo.h中:

class foo{

     private:
        static string fooString;
};

Foo.cpp中:

string foo::fooString = "foo";

并且:

在我的特定情况下,foo :: fooString应该表示一个路径变量,我希望对于类foo的每个对象,只有一个foo :: string实例,表示一个永远不会改变的const值。

有没有其他方法可以解决这个问题?

为什么这可能是一个int变量:[..]但是对于一个字符串变量我需要这样做吗?

只是因为。 实际上你仍然可以创建string const但是,是的,你必须在类定义之外定义它。 只有static成员是const和整数(或“文字类型”)时,才可以对static成员进行就地初始化。

(在C ++ 11中,当它们是文字类型时,您甚至可以为非staticconst成员执行此操作。)

我希望对于类foo的每个对象,只有一个foo :: string实例,表示一个永远不会改变的const值。 有没有其他方法可以解决这个问题?

正如您所料,一个static const std::string

// C++03
struct T {
   static const std::string foo;
};

const std::string T::foo = "lol";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM