c++中const char*s[]指针问题

c++中const char*s[]指针问题
定义char *ppInstrumentID[]时若不加const报错C2440,查阅资料添加const后出现了C2664(把c++语言的复合模式改为否依然报错)。
(virtual int SubscribeMarketData(char *ppInstrumentID[], int nCount) = 0;)
求大家帮忙看一下!

加入const前:

img

加入const后:

img

你这个 函数【SubscribeMarketData】内的入参 ppInstrumentID 也要加上 const修饰

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    对于这个问题,首先要理解C2440错误和C2664错误的原因。

    C2440错误是因为在C++中,非const指针无法指向const数据。当您尝试将const char类型的数据赋值给非const char类型的数组时,编译器会报错。解决这个问题的方法是将指针类型改为const char const,并将数组中的指针指向的数据也进行相应的改动。

    C2664错误是因为函数参数类型不匹配。当您将const char类型的数组作为参数传入需要非const char类型的函数时,编译器会报错。解决这个问题的方法是将函数的参数类型修改为const char*类型。

    下面是一个示例代码,展示了如何修复这个问题:

    const char* const ppInstrumentID[] = {"instrument1", "instrument2", "instrument3"};
    
    void func(const char* instrumentID) {
        // 执行函数操作
    }
    
    int main() {
        for(int i = 0; i < 3; i++) {
            func(ppInstrumentID[i]);  // 调用函数时将数组中的每个元素作为参数传入
        }
        return 0;
    }
    

    请注意,在这个示例中,数组ppInstrumentID的类型被修改为const char const,函数func的参数类型也被修改为const char

    希望这个解答对您有所帮助。如果您有任何疑问,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^