Russian Qt Forum
Март 29, 2024, 00:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Непонятки с wstring в Си++ при применении внутри класса.  (Прочитано 5203 раз)
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 и выводил без ошибок через такую переменную. А как сделать так, чтобы пример выше работал без ошибок? Где я ошибся?

Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 10, 2018, 09:21 »

Все тут правильно, ошибки быть не должно. Прогони под дебагом.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #2 : Август 10, 2018, 12:54 »

немного настораживают знаки вопроса в строке. Может проблемы из-за сломанной кодировки?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #3 : Август 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 и выводил без ошибок через такую переменную. А как сделать так, чтобы пример выше работал без ошибок? Где я ошибся?




вы ошиблись с примером-иллюстрацией. он не содержит ошибок.
Записан
Mirra_Andryuhan
Гость
« Ответ #4 : Август 23, 2018, 05:56 »

Под дебагом прогонял, просто вылезает аварийный останов без ошибки. Однако, у меня не получилось разобраться в ситуации. Что по рекомендуете в таковом моменте?


Пример поправлю, позднее выложу тот, который содержит, может видеозапись сделаю.
« Последнее редактирование: Август 23, 2018, 06:06 от Mirra_Andryuhan » Записан
_Bers
Бывалый
*****
Offline Offline

Сообщений: 486


Просмотр профиля
« Ответ #5 : Август 27, 2018, 11:54 »

Что по рекомендуете в таковом моменте?
привести оригинальный код, который иллюстрирует ошибку.
либо привести минимально-компилирующийся пример-иллюстрацию вашей ошибки.

приводить рабочий код, на котором вам баг не воспроизводится - не нужно.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.066 секунд. Запросов: 23.