【发布时间】:2013-09-22 13:02:52
【问题描述】:
Given 是一个具有静态成员的类。
class BaseClass
{
public:
static std::string bstring;
};
String 显然必须在类之外默认初始化。
std::string BaseClass::bstring {"."};
如果我将上述行与类一起包含在标题中,则会收到symbol multiply defined 错误。它必须在单独的cpp 文件中定义,即使是include guards 或pragma once。
没有办法在header中定义吗?
【问题讨论】:
-
标头不用于初始化。它们用于提供接口声明。
-
@Elazar 如果我必须提供多个定义文件来初始化多个类中的单个成员,则会适得其反,如果我为多个标题提供单个定义文件,则违反直觉。在标头中对其进行初始化将是最舒适的解决方案。
-
但就是这样。
标签: c++ class static-members