С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.11.2018
Сообщений: 10
1

Никак не могу починить проблему со вложенными классами

04.11.2019, 16:58. Показов 1959. Ответов 4

Author24 — интернет-сервис помощи студентам
Здравствуйте. Есть два класса. Где в родители объявление переменной в protected, во вложенном классе хочу воспользоваться этой переменной. Как это чинить?
Вот пример кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class State {
  public:
    class Game;
    class Menu;
  protected:
    string test = "test";
  private:
};
class State::Game {
  public:
    void start() {
      cout << test << endl;
    }                                                                                                                              
  protected:
  private:
};
int main() {
 State state;
  
 State::Game game;
                                                                                                                                   
 game.start();
return 0;
}
компилятор говорит следующие:
ошибка: некорректное использование нестатического элемента «State::test»
17 | cout << test << endl;
| ^~~~
замечание: объявлено здесь
11 | string test = "test";
| ^~~~
Гугл не помог.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2019, 16:58
Ответы с готовыми решениями:

STM8S. Прерывания и софт-уарт, никак не могу найти проблему.
Всем добрый вечер. На днях столкнулся с такой проблемой — никак не могу разрулить, почему ничерта...

Логичекая схема сети - Зашел в тупик, не могу никак решить эту проблему.
Есть вот такая схема: http://i51.tinypic.com/1z5hhz8.jpg Моя задача - составить логический...

Программирование с вложенными классами
Хелп, мой вариант 9.

Проблемма с вложенными классами
Собственно, код программы. Компилятору не нравятся строки №41 и 47. Можете подсказать, в чем может...

4
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,884
Записей в блоге: 1
04.11.2019, 18:37 2
Лучший ответ Сообщение было отмечено object object как решение

Решение

object object, класс State::Game ничего о State не знает. Узнать он может примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <string>
 
using namespace std;
 
class State {
  public:
    class Game;
    class Menu;
  protected:
    string test = "test";
  private:
};
class State::Game {
  public:
      Game(State* s): pState{s} {}
    void start() {
      cout << pState->test << endl;
    }                                                                                                                              
  protected:
  private:
      State* pState;
};
 
int main() {
 State state;
  
 State::Game game(&state);
                                                                                                                                   
 game.start();
return 0;
}
Цитата Сообщение от object object Посмотреть сообщение
Где в родители объявление переменной в protected
тебе случайно не наследование нужно?
1
21 / 16 / 5
Регистрация: 22.06.2015
Сообщений: 68
04.11.2019, 18:42 3
Добрый вечер.

class State::Game - является вложенным классом, а не классом наследником, а значит не имеет доступа к элементам класса State
Цитата Сообщение от object object Посмотреть сообщение
string test = "test";
И по хорошему, переменные должны инициализироваться в конструкторе
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,884
Записей в блоге: 1
04.11.2019, 18:49 4
Цитата Сообщение от Albinos Посмотреть сообщение
И по хорошему, переменные должны инициализироваться в конструкторе
дефолтное значение нужно так присваивать
1
0 / 0 / 0
Регистрация: 21.11.2018
Сообщений: 10
04.11.2019, 22:26  [ТС] 5
Всем большое спасибо!
0
04.11.2019, 22:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2019, 22:26
Помогаю со студенческими работами здесь

Разобраться с вложенными классами-шаблонами
Есть код (Стивен Дьюхерст, С++ священные знания): template &lt;class T&gt; class AnAlloc { ...

Не могу отловить проблему, вроде не большая проблема, но не могу двинуться дальше
Мне нужно написать маленькую длл ку, для обмена пакетами. Делаю(вырезал всё лишнее, оставил соль):...

Не могу разобраться со вложенными if
В общем, задание такое: Требуется спросить у пользователя: фамилию, имя, отчество РАЗДЕЛЬНО...

не могу починить комп
Здравствуйте.Долго думал куда тему отпостить, решил сюда. Проблема в следующем. Стоял значит у...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru