#include <iostream>
#include <cstring>
class CTextBlock
{
public:
CTextBlock(char* tmp)
{
pText = tmp;
}
char& operator[](std::size_t position) const
{
std::cout << "const function" << std::endl;
return pText[position];
}
private:
char* pText;
};
int main()
{
const CTextBlock cctb("Hello");
char* pc = &cctb[0];
*pc = 'J';
return 0;
}
这个问题怎么解决哦?
我尝试注释掉构造函数中的那一条语句,并把传入参数修改为const类型,编译是可以通过,但是我想的是传入这个字符串并把它赋值给另一个变量,这该怎么解决啊。
如果只是不看見這個warning,可以在編譯的時候加入 -Wno-write-strings。
如果是想讓程式碼以合理的方式組織來避開warning可以用:
我個人建議還是用string。
"Hello"
這是字串字面量啊,它放在程式的常數區(編譯器有可能給最佳化掉),所以把位址傳遞給一個char*
自然會報warning的要嘛換
const char*
,要嘛用const_cast
。我個人也推薦使用
std::string
。