如何在 C++ 的外部类构造函数中初始化嵌套类成员
How to initalize nested class members in outer class constructor in C++
我在C++中有一个程序,它有一个嵌套的类,如下所示
class Outer{
Outer(int val);
private:
class Inner;
std::unique_ptr<Inner> obj;
};
Outer::Outer(int val):obj(Inner::CreateInstance(val))
{
}
我的内部类在另一个文件中,并且有一个私有字符串变量 mystring,如下所示
class Inner{
public:
Inner(int val):mVal(val), mystring(""){
}
static std::unique_ptr<Inner> CreateInstance(int val){
// returns Inner unique ptr
}
private:
int mVal
string mystring;
};
这里 mVal 和 mystring 已经在内部类构造函数中初始化。但是我收到这个 MISRA 错误,说 mystring 未在外部构造函数中初始化。
如何从外部构造函数初始化 mystring? 即使内部类初始化了mystring,为什么我会收到这种错误。
你试过这个吗?不需要在外部类中具有前向声明。 我假设只是翻转这些类。
class Inner{
public:
Inner(int val):mVal(val), mystring(""){
}
static std::unique_ptr<Inner> CreateInstance(int val){
// returns Inner unique ptr
/* I am using an arbitrary integer as an example */
return std::make_unique<Inner>(10);
}
private:
int mVal;
std::string mystring;
};
class Outer{
Outer(int val);
private:
std::unique_ptr<Inner> obj;
};
Outer::Outer(int val):obj(Inner::CreateInstance(val))
{
}
相关文章:
- 如何在 C++ 的外部类构造函数中初始化嵌套类成员
- 嵌套的模板结构构造函数实现
- C2436 '{ctor}':构造函数初始值设定项列表中的成员函数或嵌套类
- 如何使用嵌套初始化构造函数中的一维向量初始化矩阵
- 在C 中,为什么在嵌套的unordered_map上调用函数需要移动构造函数
- 显式构造函数和嵌套初始值设定项列表
- C++ 嵌套构造函数调用问题
- 嵌套构造函数C++
- C++ 初始化构造函数初始化列表中的嵌套结构?
- 如何在源文件中实现嵌套类构造函数
- 使用父类构造函数初始化列表中的嵌套类字段中设置值
- C++中的模板类的嵌套类的构造函数
- 嵌套模板类构造函数
- 类模板中嵌套的结构的构造函数出现问题
- 在头类构造函数中使用嵌套类
- 嵌套结构构造函数和并集的问题
- 模板嵌套类的构造函数问题(复制 ctor 似乎覆盖了其他 ctor)
- C++析构函数嵌套类的显式模板
- C++和析构函数(嵌套类和一般问题)
- C++函数嵌套模板