我编写了可以毫无问题地返回const char*
的函数:
class Test {
public:
const char* data() const {return data_;}
private:
char* data_;
};
int main()
{
Test test;
const char* temp = test.data();
return 0;
}
今天我需要返回const char**
,所以我做了同样的事情:
class Test {
public:
const char** data() const {return data_;}
private:
char** data_;
};
int main()
{
Test test;
const char** temp = test.data();
return 0;
}
但是它告诉我:
main.cpp:15:39: error: invalid conversion from ‘char**’ to ‘const char**’ [-fpermissive]
const char** data() const {return data_;}
^~~~~
在MSVC中,它报告:
error C2440: 'return': cannot convert from 'char **const ' to 'const char **'
我知道它是因为const char **不是“完全const”,它是const char *的指针,但是错误消息确实使如何解决很困惑。
我的问题是:返回“完全常量”字符**的正确方法是什么?谢谢!