C++调用指针无法读取内存

TextBMFont::TextBMFont():
_labelBMFontRenderer(nullptr),
_fntFileName(""),
_stringValue(""),
_labelBMFontRendererAdaptDirty(true)//无法读取内存
{
}

TextBMFont::~TextBMFont()
{
_labelBMFontRenderer = nullptr;
}

TextBMFont* TextBMFont::create()
{
TextBMFont* widget = new (std::nothrow) TextBMFont();
if (widget && widget->init())
{
widget->autorelease();
return widget;
}
CC_SAFE_DELETE(widget);
return nullptr;
}

TextBMFont* TextBMFont::create(const std::string &text, const std::string &filename)
{
TextBMFont* widget = new (std::nothrow) TextBMFont();
if (widget && widget->init())
{
widget->setFntFile(filename);
widget->setString(text);
widget->autorelease();
return widget;
}
CC_SAFE_DELETE(widget);
return nullptr;
}

void TextBMFont::initRenderer()
{
if (_labelBMFontRenderer) _labelBMFontRenderer = nullptr;
_labelBMFontRenderer = cocos2d::Label::create();
addProtectedChild(_labelBMFontRenderer, LABELBMFONT_RENDERER_Z, -1);
}

void TextBMFont::setFntFile(const std::string& fileName)
{
if (fileName.empty())
{
return;
}
_fntFileName = fileName;
_labelBMFontRenderer->setBMFontFilePath(fileName);

updateContentSizeWithTextureSize(_labelBMFontRenderer->getContentSize());
_labelBMFontRendererAdaptDirty = true;

}

void TextBMFont::setString(const std::string& value)
{
if (value == _labelBMFontRenderer->getString())//这里提示无法读取内存
{
return;
}

1个回答

对指针对象的内容的提领前提是该指针所指向的地址有实际的意义,建议你在使用变量_labelBMFontRenderer之前判断该指针变量是否为空

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问