Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2016, 12:42   #1
kintel
Пользователь
 
Регистрация: 08.06.2016
Сообщений: 11
По умолчанию Область видимости объекта

Здравствуйте!
Такая проблема: я в конструкторе класса пытаюсь создать объект другого класса, при этом объект другого класса не виден в других методах первого класса. Что-то типа того:

Код:
#include "Another.h"
class One{
  One(name)//коструктор One
  {
     Another(name);//создаю Another
  }
  someFn()
  {
      Another.use();//identifier "Another" is undefined
  }
};
Я, правда, не пытался скомпилировать свой код(пока это невозможно), и эту "ошибку"(скорее подсказку) мне показывает студия.

PS: я догадался, что, возможно, объект Another надо вначале объявить в разделе public. Но этого сделать нельзя. Так как у него конструктор только с параметром и выскакивает какая-то связанная с этим ошибка.
Ещё раз вопрос: как сделать, чтобы объект Another был виден в методе One::someFn?
kintel вне форума Ответить с цитированием
Старый 09.07.2016, 12:51   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Непонятный код, но видимо надо было добавить поле в класс и использовать список инициализации как-то так:

Код:
class One
{
public:
  One(std::string name)
    : m_another(name)
  {  }
  
  void someFn()
  {
     m_another.use();
  }

private:
  Another m_another;
};
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 09.07.2016, 13:16   #3
kintel
Пользователь
 
Регистрация: 08.06.2016
Сообщений: 11
По умолчанию

Спасибо, так и есть, если использовать список инициализации, то ошибок нет.
kintel вне форума Ответить с цитированием
Старый 09.07.2016, 13:21   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
One(name)//коструктор One
  {
     Another(name);//создаю Another
  }
Тут объект типа Another создается и сразу разрушается, т.к. вы его никуда не сохраняете.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Область видимости chertovich Общие вопросы Delphi 10 24.09.2011 03:21
Область видимости переменной accipiter Общие вопросы C/C++ 0 27.12.2010 00:22
область видимости классов sashonk JavaScript, Ajax 1 15.09.2010 11:19
область видимости Dimarik Общие вопросы .NET 5 21.02.2010 21:32
область видимости ? artem779 Общие вопросы Delphi 3 14.09.2007 09:34