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

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

02.02.2019, 15:09. Показов 6590. Ответов 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,430
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,430
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,430
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,430
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,430
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,430
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,430
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,430
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
Ответ Создать тему
Новые блоги и статьи
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru