关于类:如何在C ++中定义字符串常量?

How do I define string constants in C++?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
C++ static constant string (class member)
static const C++ class member initialized gives a duplicate symbol error when linking

我的C++经验是预先添加了字符串类,所以我从某些方面开始。

我正在为类定义头文件,并希望为URL创建一个静态常量。我尝试这样做,方法如下:

1
2
3
4
5
6
7
#include <string>
class MainController{
private:
    static const std::string SOME_URL;
}

const std::string MainController::SOME_URL ="www.google.com";

但这在链接期间给了我一个重复的定义。

我怎样才能做到这一点?


移动

1
const std::string MainController::SOME_URL ="www.google.com";

到cpp文件。如果您将它放在一个头中,那么包含它的每个.cpp都将有一个副本,并且您将在链接期间得到重复符号错误。


你得排队

1
const std::string MainController::SOME_URL ="www.google.com";

在cpp文件中,不是头,因为有一个定义规则。您不能在类中直接初始化它,这是因为std::string不是整型(如int)。

或者,根据您的用例,您可以考虑不创建静态成员,而是使用匿名名称空间。有关赞成/反对的信息,请参阅本帖。


在头文件中定义类:

1
2
3
4
5
//file.h
class MainController{
private:
    static const std::string SOME_URL;
}

然后,在源文件中:

1
2
3
4
//file.cpp
 #include"file.h"

const std::string MainController::SOME_URL ="www.google.com";

您应该将const std::string MainController::SOME_URL ="www.google.com";定义放入单个源文件中,而不是头文件中。