operator []错误无效类型' Config * [const char [8]]'对于数组下标

时间:2014-05-04 14:32:58

标签: c++

为什么会出错?

- Config.h

class Config: {
    public:
        void read();
        std::string operator[](std::string key);
        ....
};

- app.cpp

Config *config;
config->read();
std::string a=config["sysname"]; // this line error

1 个答案:

答案 0 :(得分:5)

config是一个指针,所以在语法上有效的方法是调用它operator[]

(*config)["sysname"]

config->operator[]("sysname")

混淆错误消息的原因是在指针上调用operator[]在语法上是正确的,但参数是一个整数类型:

int* p;
p[42];

请注意,代码config中没有指向有效的Config对象。