выбрать глобальную переменную файла производного класса по виртуальной функции базового класса - PullRequest
0 голосов
/ 27 июня 2011

Это общая проблема, с которой я сталкиваюсь.Я намерен написать производный класс для существующего кода.Позвольте мне предоставить фрагмент кода (только пример):

Base_class_file:

const int addr=0xA;

Base_class::Read()
{
  return *addr;
}

Обратите внимание, переменная addr является глобальной переменной в файле базового класса.Теперь я пишу производный класс, потому что для изменения некоторых функций, а также для изменения адреса.Я хотел бы повторно использовать метод Read () и просто упомянуть новый addr (скажем, 0xB) в файле производного класса.Поскольку эта переменная является глобальной переменной, как я должен упомянуть в методе Read () базового класса использовать addr = 0xB, а не 0xA ??

Ваша помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 27 июня 2011

Как насчет ....

virtual int & GetTheGlobalVariable() const {return addr;}

и затем переопределить этот метод в подклассе, чтобы вернуть другой результат?

0 голосов
/ 27 июня 2011

Вы переопределяете его в производном классе и возвращаете 0xB. Конечно, это работает, только если метод базового класса Read объявлен virtual.

...