C++ C样式结构,带有已删除的默认构造函数难题

C++ C样式结构,带有已删除的默认构造函数难题,c++,C++,假设我有一个C风格的结构,如下所示: typedef struct { const struct { int ac; int bc; } const_vars; int x; int y; } myCStruct; myCStruct sVar = {{123,678},0,0}; 我可以按如下方式初始化上述类型的变量

假设我有一个C风格的结构,如下所示:

        typedef struct {
          const struct {
            int ac;
            int bc;
          } const_vars;
          int x;
          int y;
        } myCStruct;
        myCStruct sVar = {{123,678},0,0};
我可以按如下方式初始化上述类型的变量:

        typedef struct {
          const struct {
            int ac;
            int bc;
          } const_vars;
          int x;
          int y;
        } myCStruct;
        myCStruct sVar = {{123,678},0,0};
现在我决定使用上面的
std::map

        std::map<int,myCStruct,std::less<int>,myAllocator<std::pair<int,myCStruct>>> myMap;
std::map myMap;
执行此操作时,会出现编译错误:

错误:调用隐式删除的“myCStruct”默认构造函数

myMap
试图实例化myCStruct,但遇到一个已删除的默认构造函数。我知道默认的ctor因为结构的
const
成员而被删除。我尝试将类型转换为C++样式结构,并定义了默认的cTor,但是后来我被卡住,无法初始化变量<代码> MyCuStReVSAR< /COD>,因为编译器找不到匹配的CtoR。 问题1。本例中的匹配ctor是否将
std::initializer\u list
int
int
作为参数


问题2。这是一个玩具示例,我的实际用例有点复杂,编写一个匹配的ctor将是乏味的(而且似乎有些过分)。我有更多这样的类型,所以我必须为所有类型复制这些类型。如上所示定义
myCStruct sVar
的便利性是无与伦比的!我有一个简单的输出吗?

显示
myAllocator
的声明。如果我用STD::ApLooalt编译它。在C++中没有这样的“C样式结构”,这就是我们所说的“结构”,所有的意思是“所有属性默认是公共的”。是的,“TADMAN是正确的,没有C风格结构。我很困惑。。。