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

ask*_*pen 0 c++

为什么这个错?

- Config.h

class Config: {
    public:
        void read();
        std::string operator[](std::string key);
        ....
};
Run Code Online (Sandbox Code Playgroud)

- app.cpp

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

jua*_*nza 5

config是一个指针,调用它的语法如此有效的方式operator[]

(*config)["sysname"]
Run Code Online (Sandbox Code Playgroud)

要么

config->operator[]("sysname")
Run Code Online (Sandbox Code Playgroud)

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

int* p;
p[42];
Run Code Online (Sandbox Code Playgroud)

请注意,在您的代码config中并未指向有效Config对象.