C++ map STL错误:数组的APN2OrthRead的大小有非整数类型的const char(13)

C++ map STL错误:数组的APN2OrthRead的大小有非整数类型的const char(13),c++,stl,C++,Stl,我有以下类型的文件 struct PolicyRuleInfo{ BearerQoSInfo stBearerQoS; TFTInfo stTFTInfo; PolicyRuleInfo(){}; PolicyRuleInfo( BearerQoSInfo const& qos, TFTInfo const& tft) : stBearerQoS(qos), stTFTInfo(tft) { } }; typedef ma

我有以下类型的文件

struct PolicyRuleInfo{
    BearerQoSInfo stBearerQoS;
    TFTInfo stTFTInfo;

    PolicyRuleInfo(){};
    PolicyRuleInfo( BearerQoSInfo const& qos, TFTInfo const& tft)
       : stBearerQoS(qos), stTFTInfo(tft)
    { }
};

typedef map<string, PolicyRuleInfo> listOfPolicyRuleInfo;

struct IPAddressPolicyRulesInfo{
    CIPAddress ipAddress;
    listOfPolicyRuleInfo policyRules;
    IPAddressPolicyRulesInfo(){};
    IPAddressPolicyRulesInfo(CIPAddress ipaddr, string policyRuleName, PolicyRuleInfo policyRule): ipAddress(ipaddr){policyRules[policyRuleName]=policyRule;};

    void addPolicycyRule(string policyRuleName, PolicyRuleInfo policyRule) { policyRules[policyRuleName]=policyRule; }
};

typedef map<string, IPAddressPolicyRulesInfo> APN2PolicyRules;

typedef map<string, APN2PolicyRules>     IMSI2APNPolicyRules;
我得到的错误是数组'apn2policy'的大小具有非整数类型'const char[13]'

早些时候,我将listOfPolicyRuleInfo声明为typedef列表,但是当更改为map时,我得到了这个错误

谢谢, pdk

这是错误的;您正在声明一个Apn_Internet×APN2PolicyRules对象数组,这显然是胡说八道

您必须首先创建地图,然后使用它:

正如您所看到的,Foo[Bar]语法在不同的上下文中意味着不同的东西

这是错误的;您正在声明一个Apn_Internet×APN2PolicyRules对象数组,这显然是胡说八道

您必须首先创建地图,然后使用它:

如您所见,Foo[Bar]语法在不同的上下文中表示不同的内容。

APN2PolicyRules apn2policy[Apn_Internet]=IPAddressPolicyRules

此行试图声明APN2PolicyRules数组,但size参数是一个没有任何意义的字符串文本

您最可能想做的是:

APN2PolicyRules apn2policy; // create map
apn2policy["Apn_Internet"]=ipAddrPolicyRules; // set rule
APN2政策规则APN2政策[Apn_互联网]=IPAddressPolicyRules

此行试图声明APN2PolicyRules数组,但size参数是一个没有任何意义的字符串文本

您最可能想做的是:

APN2PolicyRules apn2policy; // create map
apn2policy["Apn_Internet"]=ipAddrPolicyRules; // set rule

您无法构造最小的测试用例?@Tomasz:APN2PolicyRules是一种映射类型。简而言之,这将起作用:apn2policy[Apn_Internet]=IPAddressPolicyRules@pdk:那么为什么你的问题不简单地说std::map?不要让我们把事情搞清楚。@TomaszKłak:请不要把答案写成注释。你不能构造一个最小的测试用例?@Tomasz:APN2PolicyRules是一种映射类型。简而言之,这将起作用:apn2policy[Apn_Internet]=ipAddressPolicyRules@pdk:那么为什么你的问题不简单地说std::map?不要让我们把事情搞清楚。@TomaszKłak:请不要把答案写成评论。@Lightness在轨道上比赛,Borgeader:我看到Borgeader的答案是在Lightness比赛前1分钟。我从Tomasz那里看到了答案,你们都是对的。我不知道该选哪一个。不过我不想不公平。请帮我提些建议:@pdk:不,我的回答是在博格里德的回答前一分钟。他只是抄了我的!所以接受我的:@Lightness在轨道上比赛,Borgeader:我看到Borgeader的答案是在Lightness比赛前1分钟。我从Tomasz那里看到了答案,你们都是对的。我不知道该选哪一个。不过我不想不公平。请帮我提些建议:@pdk:不,我的回答是在博格里德的回答前一分钟。他只是抄了我的!所以请接受我的观点:
APN2PolicyRules apn2policy; // (if it doesn't already exist)
apn2policy["Apn_Internet"] = ipAddrPolicyRules;
APN2PolicyRules apn2policy; // create map
apn2policy["Apn_Internet"]=ipAddrPolicyRules; // set rule