Есть ли какие-то "ошибки", на которые нужно обратить внимание при использовании класса (объекта) внутри себя? - PullRequest
1 голос
/ 04 июня 2010

У меня есть класс Registry, и есть несколько значений реестра, к которым я хочу получить доступ из этого класса Registry. (Есть некоторые вычисления с этими значениями, поэтому я решил поместить весь этот код прямо в сам класс реестра).

Таким образом, мы можем иметь что-то в нашем RegistryRoutine.cls, например:

Function GetMyValue() as integer
    Dim R as new RegistryRoutine

<calculations>
GetMyValue=R.GetRegisetryValue (HKEY, key, value, etc.)

End Function

Ответы [ 2 ]

1 голос
/ 06 июня 2010

Обычно классы работают с экземплярами самих себя. Рассмотрим, например, как работает древовидная структура. Либо класс Node должен отслеживать своих потомков, либо должен отслеживать своего родителя (или оба). Все узлы одного класса.

1 голос
/ 04 июня 2010

Нет, в общем случае вы не увидите никаких проблем (например, перезапись переменных-членов или что-то странное в этом роде).

Вы можете столкнуться с проблемами, если у вас есть явные общие переменные, которые записываются несколько раз. Но это опасно, что бы ты ни делал.

Следите за рекурсивными случаями - например, GetMyValue () не должен вызывать R.GetMyValue (), а GetRegistryValue () не должен вызывать GetMyValue ().

Однако редко вы действительно хотите это сделать.

  1. Поскольку вы не передаете никаких аргументов в GetMyValue (), мы можем предположить, что текущий экземпляр уже имеет всю необходимую ему информацию.
  2. Поскольку вы возвращаете только целое число, а не экземпляр RegistryRoutine, клиент не нуждается в новом экземпляре.

Так почему бы просто не вызвать GetRegistryValue ( без * R. )?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...