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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2012, 11:07   #1
AlexCODER23
Пользователь
 
Аватар для AlexCODER23
 
Регистрация: 27.12.2010
Сообщений: 17
Сообщение Вызов метода из вложенного класса

Здравствуйте. Никак не соображу, как можно исполнить такую штуку:
Есть класс A и в нем метод Do, в который передается объект класса B, который вложен в A, как правильно вызвать Do из класса B?
Ругается:
Невозможно получить доступ к нестатическому члену внешнего типа "A" через вложенный тип "B"
Но мне не нужно чтобы оно было static, т.к. значение закрепится для всего класса A (или я ошибаюсь?)
Передавать необходимо именно экземпляр класса B, т.к. в A хранится список таких экземпляров

Код:
class A
{
int Sum;
   <модификатор?> void Do(B b)
   {
     Sum+=b.value;
   }
   class B
   {
      int value;
      void Calc()
      {
          Do(this);
      }
   }
}
AlexCODER23 вне форума Ответить с цитированием
Старый 02.02.2012, 11:32   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Надо держать ссылку в классе В на класс А. Можно в конструктор добавить типа:
Код:
class B
{
private A _a;
public B(A a)
{
_a = a;
}
...
void Calc()
      {
          _a.Do(this);
      }
}
Hollander вне форума Ответить с цитированием
Старый 02.02.2012, 11:35   #3
crazy horse
ios developer
Старожил
 
Аватар для crazy horse
 
Регистрация: 16.11.2007
Сообщений: 2,885
По умолчанию

Все правильно, каждая реализация любого класса в любом объектном языке делит класс на две части - статичную, которая доступна уже в мемент компиляции и одна для всех экземпляров класса, и динамическую - которая своя для каждого объекта данного типа. НА момент старта программы никаких объектов еще нет, в том числе и самого объекта класса А. Вы же не удивляетесь, если напишете
Код:
Point x;
x.x =1;
и увидите ошибку? Естественно, сначала надо создать объект, или указать ссылку на другой. С учетом сказанного, я думаю вам несложно будет перестроить свой код для того, чтобы он работал так, как вам надо. Я же ничего предложить не могу - недостаточно контекста. Удачи!
Зы. пока писал ответ, уже опередили
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!

Последний раз редактировалось crazy horse; 02.02.2012 в 11:37.
crazy horse вне форума Ответить с цитированием
Старый 02.02.2012, 11:39   #4
AlexCODER23
Пользователь
 
Аватар для AlexCODER23
 
Регистрация: 27.12.2010
Сообщений: 17
По умолчанию

Спасибо за ответы, проблема решена =)
AlexCODER23 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вызов метода неинициализированной переменной класса coinkrsk Общие вопросы C/C++ 4 02.01.2011 17:26
Вызов метода в другом классе jec Общие вопросы C/C++ 8 31.12.2010 21:16
Вызов метода из метода kuzjma PHP 8 10.12.2010 02:38
mootools: вызов метода класса в цикле each toXx JavaScript, Ajax 1 18.03.2009 19:20
Вызов Метода из др. модуля Mickle Общие вопросы Delphi 2 10.05.2007 23:41