Dom*_*ikS 0 c++ initialization class
我是C++的新手,我的问题可能很简单,但我无法找到解决方案.
我有两节课,S和L.S看起来像这样:
class S
{
private:
int m_x;
public:
S(int x) : m_x(x)
{
}
int m_y = 2*m_x; // some random action in S
};
Run Code Online (Sandbox Code Playgroud)
现在我有了第二个类L,我想初始化一个S-object:
class L
{
private:
S s(10); // 10 is just some random value
int m_y;
public:
L(int y): m_y(y)
{
}
// ignore the rest for now.
};
Run Code Online (Sandbox Code Playgroud)
这会error: expected identifier before numeric constant在初始化行产生错误s(10).
我不明白为什么我不能这样做.我怎么能解决这个问题?如果我想初始化对象S s(m_y)怎么办?
您可以使用成员初始化列表,就像您所做的那样m_y:
L(int y): s(10), m_y(y)
{
}
Run Code Online (Sandbox Code Playgroud)
或者使用C++ 11中的默认初始化列表,但请注意它仅支持大括号或等于初始化程序,不包括括号.
class L
{
private:
S s{10}; // or S s = S(10);
int m_y;
public:
L(int y): m_y(y) // s is initialized via default initializer list
// m_y is initialized via member initializer list
{
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
491 次 |
| 最近记录: |