C++ 类外静态常量成员初始化
如何在类外初始化静态常量int成员C++ 类外静态常量成员初始化,c++,C++,如何在类外初始化静态常量int成员 class C { public: C(); private: static const int a; static const std::string b; }; // const int C::a = 4; // i know it // const std::string C::b = "ba"; // this one too 我会使用C++17并使用inlin
class C
{
public:
C();
private:
static const int a;
static const std::string b;
};
// const int C::a = 4; // i know it
// const std::string C::b = "ba"; // this one too
我会使用
C++17
并使用inline static
对象:
class C
{
public:
C() = default;
private:
inline static const int a = 42;
inline static const std::string b{"foo"};
};
最简单、最干净、最可读。我会选择
C++17
并使用内联静态对象:
class C
{
public:
C() = default;
private:
inline static const int a = 42;
inline static const std::string b{"foo"};
};
最简单、最干净、最可读。这是如何在类之外初始化静态类成员:
C.cpp
#include <string>
class C {
public:
C();
private:
static const int a;
static const std::string b;
};
C::C() = default;
const int C::a = 4;
const std::string C::b = "ba";
#包括
C类{
公众:
C();
私人:
静态常数INTA;
静态常量std::字符串b;
};
C::C()=默认值;
常数int C::a=4;
常量std::字符串C::b=“ba”;
除了在这个主题上的不同的各种C++方式之外,没有其他选项来初始化类的静态类成员。
< P>这是如何初始化类外的静态类成员:
C.cpp
#include <string>
class C {
public:
C();
private:
static const int a;
static const std::string b;
};
C::C() = default;
const int C::a = 4;
const std::string C::b = "ba";
#包括
C类{
公众:
C();
私人:
静态常数INTA;
静态常量std::字符串b;
};
C::C()=默认值;
常数int C::a=4;
常量std::字符串C::b=“ba”;
没有其他选项可以在类之外初始化静态类成员,除了所有C++方式,对这个相同的主题进行初始化。< /P>什么是“<代码>静态<代码> >代码> const <代码>应用于同一个变量?@ LogICRAT,除非它被声明为<代码> const ,否则可以更改静态数据成员的值。您的问题究竟是什么?是否有一种初始化b
的方法不起作用?您已经在注释掉的部分中这样做了,那么这种方法有什么问题?如何在类外初始化static const int成员?
除此之外还有其他方法吗?
您已经演示了如何在类外初始化它们,你为什么要寻找另一种选择?你希望从另一个选项中得到什么,而这个选项在你的问题中是你无法做到的?您不喜欢已知变量的哪些方面?将static
和const
应用于同一变量有什么意义?@logical静态数据成员的值可以更改,除非声明为const
。您的问题是什么?是否有一种初始化b
的方法不起作用?您已经在注释掉的部分中这样做了,那么这种方法有什么问题?如何在类外初始化static const int成员?
除此之外还有其他方法吗?
您已经演示了如何在类外初始化它们,你为什么要寻找另一种选择?你希望从另一个选项中得到什么,而这个选项在你的问题中是你无法做到的?你不喜欢你已经知道的一个吗?虽然我个人同意这可能是最干净的方法,但问题是如何在类外初始化static const int成员?
并且这个不是在类外。也许这就是OP想要的,但是OP问错了问题。@t.niese请仔细阅读。我想让会员们下课。我可以这样做吗???@user12918858我在我的评论中没有说别的吗?@user12918858对我来说,这是一个:你问的是如何处理一个在现代C++中已经解决的问题:如果初始化可以(也应该)在声明的地方进行(在内部,使用内联),则无需在类外讨论初始化@Quarra以及如何从main初始化?虽然我个人认为这可能是最干净的方法,但问题是如何在类外初始化static const int成员?
,并且该成员不在类外。也许这就是OP想要的,但是OP问错了问题。@t.niese请仔细阅读。我想让会员们下课。我可以这样做吗???@user12918858我在我的评论中没有说别的吗?@user12918858对我来说,这是一个:你问的是如何处理一个在现代C++中已经解决的问题:如果初始化可以(也应该)在声明的地方进行(在内部,使用内联),则无需在类外讨论初始化.@Quarra以及如何从main初始化?