c++中const char*s[]指针问题
定义char *ppInstrumentID[]时若不加const报错C2440,查阅资料添加const后出现了C2664(把c++语言的复合模式改为否依然报错)。
(virtual int SubscribeMarketData(char *ppInstrumentID[], int nCount) = 0;)
求大家帮忙看一下!
加入const前:
加入const后:
你这个 函数【SubscribeMarketData】内的入参 ppInstrumentID 也要加上 const修饰
不知道你这个问题是否已经解决, 如果还没有解决的话:对于这个问题,首先要理解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。
希望这个解答对您有所帮助。如果您有任何疑问,请随时提问。