Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 102

Как вернуть string в методе класса?

02.02.2019, 15:09. Показов 6576. Ответов 44
Метки нет (Все метки)

Как корректно вернуть строковую переменную в методе класса getString() , чтобы при обращении к нему в другой функции, не возникало ошибки нарушения прав доступа при чтении по адресу?

Неправильный пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Str(){
   private:
      std::string text;
 
   public:
      Str(std::string TEXT){
         text = TEXT;
      }
 
      std::string getString(){
         return text;
      }
 
};
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.02.2019, 15:09
Ответы с готовыми решениями:

Возможно ли как-то, зная имя класса, вернуть в каком-либо методе имя класса?
Добрый день! Интересуюсь. Есть Обобщенный метод, например: Add<T>(string nameElement). Какой конкретно Т определяется...

Приём константных векторов класса, как аргументов в методе другого класса
Есть такой класс: class Order { private: int numberOrder; map <string, int> catalogDish; double totalCost; public: ...

Как в методе класса вызвать другой метод того же класса?
class mate { public: int AplusB(int A, int B) { return A+B; } int AplusBplusC(int A, int B, int C)

44
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,428
03.02.2019, 00:03
kalambek, ты на вопрос не ответил:
Цитата Сообщение от nd2 Посмотреть сообщение
Загрузку текстур почему не проверяешь?
Добавлено через 9 минут
Цитата Сообщение от kalambek Посмотреть сообщение
C++
1
2
#include "player.cpp" //класс героя 
#include "objects.cpp" //класс подбираемых объектов
Это кто научил так делать?
0
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 102
03.02.2019, 00:39  [ТС]
DrOffset,
Вложения
Тип файла: rar Project.rar (5.95 Мб, 6 просмотров)
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,428
03.02.2019, 03:53
И, каждый раз, при запуске этого кода, происходит ошибка в этой строке (в main())?
C++
1
for (int i = 0; i < numbersObjects; i++) window.draw(arrayObjects[i].objectInst);
0
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 102
03.02.2019, 15:08  [ТС]
nd2,
Цитата Сообщение от nd2 Посмотреть сообщение
Загрузку текстур почему не проверяешь?
вроде проверил, ничего не изменилось


Цитата Сообщение от nd2 Посмотреть сообщение
И, каждый раз, при запуске этого кода, происходит ошибка в этой строке (в main())?
Да, если поменять что-то в классе Object, то начинает ругаться на метод который возвращает string переменную
Цитата Сообщение от kalambek Посмотреть сообщение
sf::String getId() { return id; }

Сейчас ругается на 2ую строчку из файла stuff.cpp:
Цитата Сообщение от kalambek Посмотреть сообщение
void transferStuff(Object *&arrayObjects, int numbersObjects) {
arrayObjects = new Object[numbersObjects]{ tapeRed, tapeGreen, tapeBlue, tapeYellow }; //ошибка: для класса Object нет конструктора по-умолчанию
}
Добавлено через 59 минут
ошибка: для класса Object нет конструктора по-умолчанию
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,428
03.02.2019, 15:51
Что мешает сделать конструктор по умолчанию?

Добавлено через 7 минут
Цитата Сообщение от kalambek Посмотреть сообщение
Да, если поменять что-то в классе Object,
Каким образом поменять?

Добавлено через 2 минуты
У меня, твой код (с конструктором по умолчанию), ошибок не выдаёт.
1
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 102
03.02.2019, 17:02  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
Что мешает сделать конструктор по умолчанию?
Тогда зачем нужны остальные конструкторы, если при создании массива объектов
C++
1
arrayObjects = new Object[numbersObjects]{ tapeRed, tapeGreen, tapeBlue, tapeYellow };
, используется конструктор по-умолчанию?
C++
1
Object(){}
Или эти конструкторы используются косвенно? У меня ошибка по-прежнему присутствует.
Сейчас вообще как то на рандоме возникает. То появляется при запуске, то нет.


Цитата Сообщение от nd2 Посмотреть сообщение
Каким образом поменять?
Добавлять новые переменные, например.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,428
03.02.2019, 17:12
Цитата Сообщение от kalambek Посмотреть сообщение
У меня ошибка по-прежнему присутствует.
Какая ошибка? Конструктор добавил?
Цитата Сообщение от kalambek Посмотреть сообщение
Добавлять новые переменные, например.
Конкретно покажи.

Добавлено через 6 минут
Цитата Сообщение от kalambek Посмотреть сообщение
Тогда зачем нужны остальные конструкторы, если при создании массива объектов используется конструктор по-умолчанию?
При создании массива объектов как раз и нужен конструктор по умолчанию.
1
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 102
03.02.2019, 17:47  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
Какая ошибка? Конструктор добавил?
всё та же ошибка нарушения прав доступа. Конструктор добавил.

Цитата Сообщение от nd2 Посмотреть сообщение
Конкретно покажи.
Было:
class Object
C++
1
2
3
4
5
6
7
{
private:
    float x = 500; float y = 10;
    int width; int height;
    sf::String text;
    sf::String id;
...
Стало:
class Object
C++
1
2
3
4
5
6
7
8
{
private:
    float x = 500; float y = 10;
    int width; int height;
    sf::String text;
    sf::String id;
    sf::String new;
...
Цитата Сообщение от nd2 Посмотреть сообщение
При создании массива объектов как раз и нужен конструктор по умолчанию.
Когда тогда используются конструкторы, которые добавил DrOffset ?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,428
03.02.2019, 18:45
Цитата Сообщение от kalambek Посмотреть сообщение
sf::String new;
Зачем имя задаёшь ключевым словом?
Цитата Сообщение от kalambek Посмотреть сообщение
всё та же ошибка нарушения прав доступа.
Покажи скрин, как это выглядит.

Добавлено через 57 секунд
Цитата Сообщение от kalambek Посмотреть сообщение
Когда тогда используются конструкторы, которые добавил DrOffset ?
Когда нужно, тогда и используются, это не твоя забота, главное, чтобы они были.

Добавлено через 1 минуту
Студия какая у тебя?

Добавлено через 29 минут
Цитата Сообщение от kalambek Посмотреть сообщение
Стало:
Добавил поле и всё? Больше ничего в коде не менял? Нигде в коде не обращаешься к этому новому полю?
1
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 102
03.02.2019, 19:51  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
Покажи скрин, как это выглядит.
Вторая ошибка возникает при изменении чего-либо в классе Object. Программа запускается но при наведении на объект
крашится и выдаёт эту ошибку.

Цитата Сообщение от nd2 Посмотреть сообщение
Студия какая у тебя?
Visual C++ 2017

Цитата Сообщение от nd2 Посмотреть сообщение
Добавил поле и всё? Больше ничего в коде не менял? Нигде в коде не обращаешься к этому новому полю?
Да. Я сейчас попробовал добавить переменную в классе Player и игрок перестал двигаться. Путём удаления функции main и класса Player, и обратным их возвращением, игрок снова двигается. Мне всё больше кажется, что проблема с моей студией, потому что все эти ошибки происходят без видимых на то причин.
Миниатюры
Как вернуть string в методе класса?   Как вернуть string в методе класса?  
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,428
03.02.2019, 20:29
Откуда и зачем взядлись dll в папке с проектом?

Добавлено через 13 минут
Цитата Сообщение от kalambek Посмотреть сообщение
Я сейчас попробовал добавить переменную в классе Player
Только с переменными SFML пробуешь?
Поставь точку останова в mouseHover(), на строке, где вылетает, и посмотри, что у тебя в arrayObjects.
1
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
03.02.2019, 22:20
Не смотря на то, что код грязный и в нем много косяков, я не нашел в нем больше активных проблем, которые могли бы приводить к падению. То, что тут надо все переписать - однозначно, но при прочих равных этот код падать не должен.

Поэтому я думаю, что тут
* либо проблема с нарушением ODR (dll-ки SFML не подходят к заголовочным файлам, например из-за разных версий)
* либо DLL-ки собраны другой версией компилятора, либо с другими настройками runtime или чего-то подобного.

У меня с нормально установленным, подходящим под мою версию компилятора SFML, проблема не воспроизвелась.
Автор, как устанавливался SFML и откуда взялись DLL-ки в каталогах проекта?
1
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 102
04.02.2019, 17:52  [ТС]
DrOffset,
Цитата Сообщение от DrOffset Посмотреть сообщение
как устанавливался SFML
по примеру из интернета со следующими настройками (на фотографиях)

Цитата Сообщение от DrOffset Посмотреть сообщение
откуда взялись DLL-ки в каталогах проекта
Если вы спрашиваете про dll-ки с именами msvcp...dll, то они вроде как нужны дополнительно при отладке. Я их на всякий случай удалил, но ничего не поменялось
Миниатюры
Как вернуть string в методе класса?   Как вернуть string в методе класса?   Как вернуть string в методе класса?  

Как вернуть string в методе класса?  
0
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 102
04.02.2019, 18:06  [ТС]
nd2, похоже всё-такаи какая-то проблема с dll-ками
Миниатюры
Как вернуть string в методе класса?   Как вернуть string в методе класса?  
0
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 102
04.02.2019, 18:13  [ТС]
Цитата Сообщение от kalambek Посмотреть сообщение
как устанавливался SFML
ну и в конце сбросил dll-шки из папки sfml/bin в папку debug проекта
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,428
04.02.2019, 18:51
SFML для 15-й студии? 64 бита или 32?

Добавлено через 1 минуту
Цитата Сообщение от kalambek Посмотреть сообщение
ну и в конце сбросил dll-шки из папки sfml/bin в папку debug проекта
Из студии запуск делаешь?
1
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 102
04.02.2019, 18:53  [ТС]
nd2, 15 версия 64 бит

Цитата Сообщение от nd2 Посмотреть сообщение
Из студии запуск делаешь?
да
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,428
04.02.2019, 18:57
Может sfml для 15-й не подходит к 17-й?

Добавлено через 33 секунды
Есть ветка форума по SFML, спросил бы там.

Добавлено через 1 минуту
Цитата Сообщение от kalambek Посмотреть сообщение
ну и в конце сбросил dll-шки из папки sfml/bin в папку debug проекта
Они там нужны, если оттуда будешь .exe запускать, если из студии, то нужны в папке проекта, или должны быть прописаны в path. Но если бы dll не находились, то сообщение бы было.
1
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
04.02.2019, 19:24
Цитата Сообщение от kalambek Посмотреть сообщение
Если вы спрашиваете про dll-ки
Я спрашиваю о том как и где вы брали dll-ки SFML.
Цитата Сообщение от DrOffset Посмотреть сообщение
Автор, как устанавливался SFML и откуда взялись DLL-ки в каталогах проекта?
sfml-window-d-2.dll и остальные.

Цитата Сообщение от nd2 Посмотреть сообщение
Может sfml для 15-й не подходит к 17-й?
Цитата Сообщение от nd2 Посмотреть сообщение
SFML для 15-й студии? 64 бита или 32?
Вот вам задали вопросы. Именно поэтому я и спрашиваю про DLL-ки. Если вы поставили DLL-ки от студии 2015, в студию 2017, то ваши проблемы закономерны. DLL-ки С++, использующего STL, от 15 к 17 абсолютно точно не подходят, т.к. в STL были сделаны определенные изменения, ломающие совместимость.
1
0 / 0 / 0
Регистрация: 07.04.2015
Сообщений: 102
04.02.2019, 19:31  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
Может sfml для 15-й не подходит к 17-й?
15ую я имею ввиду версию, год 2017: Visual C++ 15 (2017). Подходит.

Сейчас такая ошибка. Не понимаю почему не находятся файлы, я же всё верно подключил.
Миниатюры
Как вернуть string в методе класса?  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.02.2019, 19:31

Как вызвать метод вложенного класса в методе родительского класса
Имеется родительский класс для прорисовки графики Jogj package objects; import com.jogamp.opengl.GL2; import...

Как вызвать метод класса в другом методе этого же класса?
&lt;? class load_files{ public function traverse_hierarchy($path) { // from...

Использование метода класса как функции в качестве типизированного аргумента в методе класса
Использование метода класса как функции в качестве типизированного аргумента в методе класса C++: как правильно использовать метод ...

Как правильно создать массив объектов текущего класса в методе данного класса?
Привет! Ставится задача создания метода, который формирует массив объектов. Правильно ли делать этот метод внутри класса, экземпляром...

Как вернуть двум неициализированным переменным индекс массива, в методе?
Задание: Напишите программу со статическим методом, аргументом которому передается двумерный целочисленный массив. У метода, кроме...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
Своя Интернет-Компания
iceja 18.06.2026
Я программист с экономическим образованием, пишу свой проект, это SaaS для бизнесов. Мне нужен co-founder с высшим экономическим образованием, и/ или инвестор. Сейчас проект в интенсивной разработке,. . .
24 Мат модель здравосохранения: функциональные требования к строительству пищеблока
anaschu 18.06.2026
СРесурсами1: финансовый SD-контур, калькулятор функциональных требований пищеблока Сегодня разделили затраты в агенте Экономика по образцу модели НАСОСЫ, добавили расчёт ROI и построили первый. . .
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов • Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp • Смежный проект:. . .
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru