0

これは私が持っている構造体であり、そのためのデフォルトのコンストラクターを作成しようとしています。

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'
4

1 に答える 1

6

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

};
于 2012-10-03T19:33:18.490 に答える