Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我的结构中的映射构造函数不起作用?_C++_Stl_Map_Constructor - Fatal编程技术网

C++ 为什么我的结构中的映射构造函数不起作用?

C++ 为什么我的结构中的映射构造函数不起作用?,c++,stl,map,constructor,C++,Stl,Map,Constructor,这就是我拥有的结构,我正在尝试为此编写默认构造函数 struct Cnode { typedef std::map<char, int> nextmap; typedef std::map<char, int> prevmap; Cnode() : nextmap(), prevmap() {} //error Cnode(const nextmap2, const prevmap2) : nextmap(nextmap2), prevmap(prevmap2) {}

这就是我拥有的结构,我正在尝试为此编写默认构造函数

struct Cnode
{
typedef std::map<char, int> nextmap;
typedef std::map<char, int> prevmap;

Cnode() : nextmap(), prevmap() {} //error
Cnode(const nextmap2, const prevmap2) : nextmap(nextmap2), prevmap(prevmap2) {}

};
struct Cnode
{
typedef std::map nextmap;
typedef std::map prevmap;
Cnode():nextmap(),prevmap(){}//错误
Cnode(constnextmap2,constprevmap2):nextmap(nextmap2),prevmap(prevmap2){}
};
请帮助我理解此错误的含义:

Type 'nextmap'(aka 'map<char,int>') is not a direct or virtualbase of 'Cnode'
Type 'prevmap'(aka 'map<char,int>') is not a direct or virtualbase of 'Cnode'
Type'nextmap'(又名'map')不是'Cnode'的直接或虚拟数据库
类型“prevmap”(又名“map”)不是“Cnode”的直接或虚拟数据库

因为
nextmap
prevmap
不是变量,而是类型。如
typedef
所示(它定义了一种类型)

你是说:

struct Cnode
{
std::map<char, int> nextmap;
std::map<char, int> prevmap;

Cnode() : 
  nextmap(), prevmap() {}
Cnode(const std::map<char, int>& nextmap2, const std::map<char, int>& prevmap2) : 
  nextmap(nextmap2), prevmap(prevmap2) {}

};
struct Cnode
{
std::map nextmap;
std::map-prevmap;
Cnode():
nextmap(),prevmap(){}
Cnode(const std::map和nextmap2,const std::map和prevmap2):
nextmap(nextmap2),prevmap(prevmap2){}
};
或者这可能会消除您的困惑:

struct Cnode
{
typedef std::map<char, int> MapOfCharToInt;  //defines a new type

MapOfCharToInt nextmap;                      //defines variables
MapOfCharToInt prevmap;                      //of that type

Cnode() : 
   nextmap(), prevmap() {} 
Cnode(const MapOfCharToInt& nextmap2, const MapOfCharToInt& prevmap2) : 
   nextmap(nextmap2), prevmap2(prevmap2) {}

};
struct Cnode
{
typedef std::map mapofChartPoint;//定义一个新类型
MapOfChartPoint nextmap;//定义变量
MapOfChartPoint prevmap;//属于该类型
Cnode():
nextmap(),prevmap(){}
Cnode(恒定坐标点和下一个坐标点2,恒定坐标点和上一个坐标点2):
nextmap(nextmap2),prevmap2(prevmap2){}
};

因为
nextmap
prevmap
不是变量,而是类型。如
typedef
所示(它定义了一种类型)

你是说:

struct Cnode
{
std::map<char, int> nextmap;
std::map<char, int> prevmap;

Cnode() : 
  nextmap(), prevmap() {}
Cnode(const std::map<char, int>& nextmap2, const std::map<char, int>& prevmap2) : 
  nextmap(nextmap2), prevmap(prevmap2) {}

};
struct Cnode
{
std::map nextmap;
std::map-prevmap;
Cnode():
nextmap(),prevmap(){}
Cnode(const std::map和nextmap2,const std::map和prevmap2):
nextmap(nextmap2),prevmap(prevmap2){}
};
或者这可能会消除您的困惑:

struct Cnode
{
typedef std::map<char, int> MapOfCharToInt;  //defines a new type

MapOfCharToInt nextmap;                      //defines variables
MapOfCharToInt prevmap;                      //of that type

Cnode() : 
   nextmap(), prevmap() {} 
Cnode(const MapOfCharToInt& nextmap2, const MapOfCharToInt& prevmap2) : 
   nextmap(nextmap2), prevmap2(prevmap2) {}

};
struct Cnode
{
typedef std::map mapofChartPoint;//定义一个新类型
MapOfChartPoint nextmap;//定义变量
MapOfChartPoint prevmap;//属于该类型
Cnode():
nextmap(),prevmap(){}
Cnode(恒定坐标点和下一个坐标点2,恒定坐标点和上一个坐标点2):
nextmap(nextmap2),prevmap2(prevmap2){}
};

您的意图是什么?您希望
nextmap
是嵌套类型还是字段?您的意图是什么?您希望
nextmap
是嵌套类型还是字段?噢!不,我不想在一个映射下有两个变量。我需要用2张地图填充Cnode。每个映射都应该包含一个作为键类型的char列表和一个作为值类型的int列表。好的,那么我该如何在一个结构中为两个映射编写构造函数?@sumrania oops,没有看到代码中的其他错误。看编辑后的答案。哦!不,我不想在一个映射下有两个变量。我需要用2张地图填充Cnode。每个映射都应该包含一个作为键类型的char列表和一个作为值类型的int列表。好的,那么我该如何在一个结构中为两个映射编写构造函数?@sumrania oops,没有看到代码中的其他错误。见编辑后的答案。