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

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

02.02.2019, 15:09. Показов 6281. Ответов 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,427
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,427
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,427
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,427
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,427
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,427
03.02.2019, 20:29
Откуда и зачем взядлись dll в папке с проектом?

Добавлено через 13 минут
Цитата Сообщение от kalambek Посмотреть сообщение
Я сейчас попробовал добавить переменную в классе Player
Только с переменными SFML пробуешь?
Поставь точку останова в mouseHover(), на строке, где вылетает, и посмотри, что у тебя в arrayObjects.
1
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
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,427
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,427
04.02.2019, 18:57
Может sfml для 15-й не подходит к 17-й?

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

Добавлено через 1 минуту
Цитата Сообщение от kalambek Посмотреть сообщение
ну и в конце сбросил dll-шки из папки sfml/bin в папку debug проекта
Они там нужны, если оттуда будешь .exe запускать, если из студии, то нужны в папке проекта, или должны быть прописаны в path. Но если бы dll не находились, то сообщение бы было.
1
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru