basic_string :: _ S_construct null无效 - 无法找出原因?

时间:2013-09-12 16:45:25

标签: c++ string null

我正在转换一些代码以便停止使用char *,并使用std :: string来避免内存泄漏和/或缓冲区重载。

但是我遇到了上述错误的功能。我没有真正改变太多atm:

GuiText::GuiText(std::string t, int s, XeColor c) {
origText = NULL;
text = NULL;
size = s;
color = c;
alpha = c.a;
style = FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE;
maxWidth = 0;
wrap = false;
textDynNum = 0;
textScroll = SCROLL_NONE;
textScrollPos = 0;
textScrollInitialDelay = TEXT_SCROLL_INITIAL_DELAY;
textScrollDelay = TEXT_SCROLL_DELAY;

alignmentHor = ALIGN_CENTRE;
alignmentVert = ALIGN_MIDDLE;

if (!t.empty()) {
    origText = strdup(t.c_str());
    text = charToWideChar(gettext(t.c_str()));
}

for (int i = 0; i < 20; i++)
    textDyn[i] = NULL;
}

所有代码都在https://github.com/siz-/xmplayer/blob/temp/source/libwiigui/gui_text.cpp#L32

所有都是雏菊因为我有很多GuiText实例,但是当我在59行和gui.h中使用const char *注释函数来实际使我的代码使用正确的函数时,我得到了上面的错误..我看不出为什么..

https://github.com/siz-/xmplayer/blob/temp/source/libwiigui/gui_text.cpp#L59 https://github.com/siz-/xmplayer/blob/temp/source/libwiigui/gui.h#L685

如何使用它的示例: https://github.com/siz-/xmplayer/blob/temp/source/menu.cpp#L427

有什么想法吗?我已经转换了所有的gui_text.cpp,但是同样的错误,所以最好能够找到问题并从那里开始。

希望你能帮助一个新手; - )

1 个答案:

答案 0 :(得分:2)

我假设以下两行试图初始化一个字符串:

origText = NULL;
text = NULL;

哪个应该1)在初始化列表中初始化,2)如果它将是空的,不需要,3)无效(你不能将字符串初始化为NULL)。

GuiText::GuiText(std::string t, int s, XeColor c) :
    origText(t),
    size(s),
    color(c),
    alpha(c.a),
    style(FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE),
    // etc
{
    // etc
}