Как отобразить std :: string в CEdit в переполнении стека

У меня есть проект MFC, написанный на C ++, и я хочу отобразить некоторый текст в элементе управления CEdit.
Пока что я попробовал это:

MFCApplication1Dlg.h

...

private:
static CEdit m_progress;
public:
static void setProgress(std::string message);

...

MFCApplication1Dlg.cpp

...

void CMFCApplication1Dlg::setProgress(std::string message)
{
m_progress.SetWindowTextW((LPCTSTR)message.c_str());
}

void logMessage(std::string message)
{
if(logFile.is_open())
{
logFile << message;
logFile.flush();
CMFCApplication1Dlg::setProgress(message);

}
}

...

Когда я компилирую, у меня есть эта ошибка:

error LNK2001: unresolved external symbol "private: static class CEdit CMFCApplication1Dlg::m_progress" (?m_progress@CMFCApplication1Dlg@@0VCEdit@@A)

Может кто-нибудь сказать мне, что с этой ошибкой и как я могу отображать сообщения в этом CEdit?

0

Решение

Вы должны определить статический член в вашем файле cpp:

CEdit CMFCApplication1Dlg::m_progress;

В заголовке он просто объявлен, а не определен.

Также я бы ожидал SetWindowTextW взять wstring::c_str() параметр, а не string::c_str(),

1

Другие решения

Других решений пока нет …