Russian Qt Forum

Программирование => С/C++ => Тема начата: Mirra_Andryuhan от Август 10, 2018, 06:10



Название: Непонятки с wstring в Си++ при применении внутри класса.
Отправлено: Mirra_Andryuhan от Август 10, 2018, 06:10
Всем доброго.

Не получается разобраться в одной ситуации (см. название темы), в которой класс wstring ведет себя непонятно. Для наглядности привожу пример.

Код:
//Элементарный класс, все просто и понятно.
class a
{
    wstring slovo;
public:
    a() {slovo = L"???????";}
    wstring getSlovo() { return slovo; }
};

wstring getslovof()
{
    wstring slovo = L"???????";
    return slovo;
}

int main()
{
   a sl;
   wcout << getslovof()  << L"\n";   //Эта строчка срабатывает нормально, вывод идет.
   wcout << sl.getSlovo() << L"\n"; //Эта строчка не срабатывает, получаю аварийное завершение программы.
   return 0;
}

В общем, посмотрел книги, полистал форумы по части классов и класса wstring, ничего не нашел в своем коде по части ошибки. Все что понял, что сделал что-то не так, при применении в классе "a". При этом, вторую строчку делал через присвоение отдельной переменной wstring и выводил без ошибок через такую переменную. А как сделать так, чтобы пример выше работал без ошибок? Где я ошибся?



Название: Re: Непонятки с wstring в Си++ при применении внутри класса.
Отправлено: Пантер от Август 10, 2018, 09:21
Все тут правильно, ошибки быть не должно. Прогони под дебагом.


Название: Re: Непонятки с wstring в Си++ при применении внутри класса.
Отправлено: kambala от Август 10, 2018, 12:54
немного настораживают знаки вопроса в строке. Может проблемы из-за сломанной кодировки?


Название: Re: Непонятки с wstring в Си++ при применении внутри класса.
Отправлено: _Bers от Август 13, 2018, 13:16
Всем доброго.

Не получается разобраться в одной ситуации (см. название темы), в которой класс wstring ведет себя непонятно. Для наглядности привожу пример.

Код:
//Элементарный класс, все просто и понятно.
class a
{
    wstring slovo;
public:
    a() {slovo = L"???????";}
    wstring getSlovo() { return slovo; }
};

wstring getslovof()
{
    wstring slovo = L"???????";
    return slovo;
}

int main()
{
   a sl;
   wcout << getslovof()  << L"\n";   //Эта строчка срабатывает нормально, вывод идет.
   wcout << sl.getSlovo() << L"\n"; //Эта строчка не срабатывает, получаю аварийное завершение программы.
   return 0;
}

В общем, посмотрел книги, полистал форумы по части классов и класса wstring, ничего не нашел в своем коде по части ошибки. Все что понял, что сделал что-то не так, при применении в классе "a". При этом, вторую строчку делал через присвоение отдельной переменной wstring и выводил без ошибок через такую переменную. А как сделать так, чтобы пример выше работал без ошибок? Где я ошибся?




вы ошиблись с примером-иллюстрацией. он не содержит ошибок.


Название: Re: Непонятки с wstring в Си++ при применении внутри класса.
Отправлено: Mirra_Andryuhan от Август 23, 2018, 05:56
Под дебагом прогонял, просто вылезает аварийный останов без ошибки. Однако, у меня не получилось разобраться в ситуации. Что по рекомендуете в таковом моменте?


Пример поправлю, позднее выложу тот, который содержит, может видеозапись сделаю.


Название: Re: Непонятки с wstring в Си++ при применении внутри класса.
Отправлено: _Bers от Август 27, 2018, 11:54
Что по рекомендуете в таковом моменте?
привести оригинальный код, который иллюстрирует ошибку.
либо привести минимально-компилирующийся пример-иллюстрацию вашей ошибки.

приводить рабочий код, на котором вам баг не воспроизводится - не нужно.