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



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

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) {}
};

请帮助我了解此错误的含义:

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'

因为nextmapprevmap不是变量,而是类型。正如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
{
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) {}
};

最新更新