Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
#1

Установить значение переменной из другого класса - C++

29.11.2013, 19:10. Просмотров 1441. Ответов 21
Метки нет (Все метки)

Всем здрасьте.
У меня есть 3 класса.Почти не как от друга не зависят.
На скрине показана схемка.
Так вот , в классе MENU у меня есть переменная name_slot типа LPCWSTR.
Так же есть в классе функция взятие этой переменной:
C++
1
2
3
4
LPCWSTR MenuClass::GetName()
{
    return name_slot;
}
Мне нужно ей присвоить значение в классе CONF через класс ENGINE(схемка в помощь).
Класс Conf у меня читает информацию с файла , которую надо записать в переменную name_slot.
Вот функция в CONF классе :
C++
1
2
3
4
5
6
7
void Initialize(LPCWSTR &name)
{
    ifstream in;
.......
    in >> name;
.......
}
Так , осталось только в классе Engine вызвать функцию Initialize.

Вот код с Engine Class :
C++
1
2
3
4
5
6
7
8
9
10
11
void NameFunc()
{
    MenuClass* menu;
    menu = new MenuClass;
........
    ConfClass* conf;
    conf = new ConfClass;
........
    conf->Initialize(menu->GetName());
     
}
Тут он у меня ругается на menu->GetName().
"Начальное значение ссылки на неконстантный параметр должно быть левосторонним значением".

Подскажите в чём проблема , или способ сделать это легче.
Миниатюры
Установить значение переменной из другого класса  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2013, 19:10     Установить значение переменной из другого класса
Посмотрите здесь:
C++ Получения доступа к переменной другого класса
C++ Разное значение переменной класса, в разных экземплярах класса
Почему изменяется значение переменной между функциями класса? C++
Как получить private переменную класса, функцей членом другого класса C++
Объявление объекта класса fstream в качестве статической компоненты другого класса C++
Приём константных векторов класса, как аргументов в методе другого класса C++
C++ Ошибка при работе с объектом класса в конструкторе другого класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
29.11.2013, 20:39  [ТС]     Установить значение переменной из другого класса #16
Цитата Сообщение от alsav22 Посмотреть сообщение
мне нужно , чтобы я мог использовать переменную name_slot в классе Menu.
И что мешает?
Ну так , передавая значение из первой функции во вторую функцию, без ссылки, я не смогу сделать так , чтобы в первой функции он принял то значение, которое было присвоено во второй.

Добавлено через 1 минуту
Так стоп , я сейчас объясню подругому , а то так до ночи дойдёт.

Добавлено через 37 секунд
metaluga145, да да , я уже начал работать над этим , но я хочу разобраться с этим.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.11.2013, 20:42     Установить значение переменной из другого класса #17
Вы передаёте указатель, а не просто переменную. Все изменения того, что содержится по этому указателю, сохранятся. Единственное что нельзя сделать, это изменить значение самого указателя (для этого нужна ссылка на указатель).

Добавлено через 1 минуту
Вам же содержание строки, с которой связан этот указатель, нужно менять?
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
29.11.2013, 20:44  [ТС]     Установить значение переменной из другого класса #18
В классе Menu есть переменная name_slot типа LPWSTR. Я хочу её вывести на экран. Но мне выдаст ошибку : "Переменная name_slot без инициализации.". Так вот , это переменную мне надо инициализировать в другом классе , в данном случае Conf
Я уже приводил пример:

Цитата Сообщение от BeginerMan Посмотреть сообщение
void main()
{
int c, d;
Calc(c,d);
cout << c << d;
Тут c выйдет 3, а d выйдет 4
return;
}
void calc(int& a, int& b)
{
a = 3;
b = 4;
}
Если думать что c и d это не int а LPWSTR.

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
Вам же содержание строки, с которой связан этот указатель, нужно менять?
Да да , эту строку , которую я передаю , нужно ей присвоить значение в функции Initialize в классе Conf
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.11.2013, 20:47     Установить значение переменной из другого класса #19
Цитата Сообщение от BeginerMan Посмотреть сообщение
Если думать что c и d это не int а LPWSTR.
С какой стати это думать? Передавайте адреса переменных, тогда это будет похоже на LPWSTR.

Добавлено через 1 минуту
Цитата Сообщение от BeginerMan Посмотреть сообщение
Да да , эту строку , которую я передаю , нужно ей присвоить значение в функции Initialize в классе Conf

Не по теме:

Это уже начинает надоедать...


Присваивайте, что мешает? Память под указатель выделена?
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
29.11.2013, 20:51     Установить значение переменной из другого класса #20
alsav22, у него там похоже неинициализированная ссылка болтается полем класса.
BeginerMan, а вообще такие косвенные зависимости "изменили в одном месте - огребли в другом" ни к чему хорошему не приводят.

Добавлено через 2 минуты
Хотя черт его знает... Автор, минимальный и достаточный пример, на котором воспроизводится ошибка - в студию.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.11.2013, 20:53     Установить значение переменной из другого класса #21
BeginerMan, Вот так через указатели делается то, что вы хотите:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void calc(int* a, int* b)
{
 *a = 3;
 *b = 4;
  
}
 
int main()
{
 int c, d;
 calc(&c, &d);
 cout << c << d;
 //Тут c выйдет 3, а d выйдет 4
 return 0;
 }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2013, 21:20     Установить значение переменной из другого класса
Еще ссылки по теме:
C++ Ошибка компиляции (преобразование объекта класса в объект другого класса)
C++ Ошибка при вызове метода класса в методе другого класса
C++ Как переместить из стека одного класса в массив другого класса?
Как сделать, чтобы функция класса могла работать с обьектами другого класса C++
Объявление объекта одного класса в описании другого класса C++

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

Или воспользуйтесь поиском по форуму:
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
29.11.2013, 21:20  [ТС]     Установить значение переменной из другого класса #22
Вот как проект
Вложения
Тип файла: rar xxx.rar (6.11 Мб, 4 просмотров)
Yandex
Объявления
29.11.2013, 21:20     Установить значение переменной из другого класса
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru