gpt4 book ai didi

c++ - 无法初始化一个 vector 来保存另一个用其构造函数初始化的类

转载 作者:行者123 更新时间:2023-11-27 23:00:12 24 4
gpt4 key购买 nike

我有以下代码。

class Screen{
public:
typedef std::string::size_type pos;
Screen() = default; //Default Constructor
Screen(pos ht, pos wd, char c) : height(ht), width(wd), contents(ht * wd, c){}
private:
pos cursor = 0;
pos height = 0, width = 0;
std::string contents;
mutable size_t access_ctr;
};

class Window_mgr{
private:
std::vector<Screen> screens{ Screen(24, 80, ' ') };//--> error message at this line.
};

我在指定行收到以下消息:

error C2797: 'Window_mgr::screens': list initialization inside member initializer list or non-static data member initializer is not implemented

基本上我想做的是,它让类 Window_mgr 有一个 vector 来保存单个 Screen 对象,该对象使用其构造函数初始化,即: Screen(pos ht, pos wd, char c) : height(ht), width(wd), contents(ht * wd, c){} 但它不允许我这样做。

最佳答案

该错误意味着您的 MSVC++ 版本未实现非静态数据成员初始化。您需要在 Window_mgr 的构造函数中对其进行初始化。

由于也不支持在初始化列表(uff)中进行列表初始化,需要在构造函数体中进行初始化:

Window_mgr::Window_mgr()
{
screens = { Screen(24, 80, ' ') };
}

关于c++ - 无法初始化一个 vector 来保存另一个用其构造函数初始化的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28498625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com