Ответ 1
Код ниже должен работать нормально. Ваша проблема, скорее всего, где-то в другом месте. Пожалуйста, сделайте чистую сборку.
Ошибка будет где-то еще в вашем более сложном коде, который вы не поделили с нами. Вероятно, у вас проблемы с настройкой _foo некорректно.
Как вы сами отметили, вы не можете изменить интерфейс, но лучше принять к сведению, что в идеальном мире вы не будете смешивать std-строки с QStrings. Вы просто используете QStrings в своем коде.
Даже если вам нужно использовать std или raw char * типы по какой-то причине, лучше не делать такой const-код в коде, так как QString будет справляться с переданными ему строками const.
main.cpp
#include <QString>
#include <QDebug>
class ClassA
{
public:
ClassA() { _foo = "Hello World!\n"; }
~ClassA() {}
char* getData() const {
return const_cast<char *> (_foo.c_str());
}
private:
std::string _foo;
};
int main()
{
ClassA temp;
QString myString = QString::fromUtf8(temp.getData());
qDebug() << "TEST:" << myString;
return 0;
}
main.pro
TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp
Вывод
TEST: "Hello World!
"