VS2017: невозможно добавить строки / строки - PullRequest
0 голосов
/ 25 июня 2018

У меня проблемы с пониманием, почему следующий код не делает то, что должен, VS2017 не показывает ошибку, и решение создано, но строка никогда не бывает такой, какой она должна быть:

void COrion::AddJournalMessage(CTextData *msg, const string &name)
{
    WISPFUN_DEBUG("c194_f101");
    CTextData *jmsg = new CTextData(msg);

    jmsg->Text = name + jmsg->Text;
}

jmsg-> Текст - это std :: string.

теперь во время выполнения, скажем, «name» - это «Player:», а «jmsg-> Text» - «Hello World», я ожидаю, что текст после кода будетбыть "Player: Hello World", но это не так.Это всего лишь «Player:», и я не понимаю, почему.

Я нашел обходной путь:

jmsg->Text = name.c_str() + jmsg->Text;

с этим изменением это «Player: Hello World».

Проблема в том, что я до сих пор не понимаю, почему первый не работает.Может кто-нибудь объяснить, где проблема?Это специфично для VS или чего-то другого?

, чтобы было ясно: это из проекта с открытым исходным кодом, который я хочу использовать, а не код, который я написал сам, но проблема была источником многих ошибок, так какиспользуется таким образом много.

edit Класс CTextData:

class CTextData : public CRenderTextObject
{
public:
    bool Unicode = false;
    TEXT_TYPE Type = TT_CLIENT;
    uchar Font = 0;
    uint Timer = 0;
    uint MoveTimer = 0;
    string Text = "";
    wstring UnicodeText = L"";
    uchar Alpha = 0xFF;
    CRenderWorldObject *Owner = NULL;
    CTextData();
    CTextData(CTextData *obj);
    virtual ~CTextData();

    virtual bool IsText() { return true; }

    bool CanBeDrawedInJournalGump();

    CGLTextTexture m_Texture;

    void GenerateTexture(
        int maxWidth,
        ushort flags = 0,
        TEXT_ALIGN_TYPE align = TS_LEFT,
        uchar cell = 30,
        int font = -1);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...