У вас есть функция с именем data
и переменная-член с именем data
в одном классе.Это не разрешеноВыберите другое имя для своей переменной-члена.
Вы также, кажется, повторно объявляете много переменных-членов.Это, вероятно, не то, что вы хотите сделать.Если вы хотите объявить их в базовом классе и использовать их в потомках, то они, вероятно, должны иметь видимость protected .Видимость по умолчанию для классов, если вы не указали других, - private , что означает, например, что потомки IVField
(например, DVField
) не могут получить доступ к переменной ptrFunc
Вы заявили в IVField
.Переменная ptrFun
, которую вы объявили в DVField
, не имеет абсолютно никакого отношения к переменной, объявленной в родительском классе.Сделайте IVField
один защищенным, и потомкам не нужно будет дублировать объявление для себя.
Вам также придется реализовать все эти другие абстрактные методы, прежде чем компилятор позволит вам создать экземплярлюбой из этих классов.