В общем, приходится вспоминать многое в Си++ (после С# я его немного подзабыл
). Но к сожалению получается вспомнить не все. Сама проблема в следующем.
У меня есть два класса, один является производным от другого:
#ifndef DATATYPES_H
#define DATATYPES_H
#include <QString>
class NDataTypes
{
public:
NDataTypes() {this->_id = -1; this->_name = "";}
qint32 ID() const {return this->_id;}
void setID(qint32 ID) {this->_id = ID;}
QString Name() const {return this->_name;}
void setName(QString Name) {if (Name != NULL) this->_name = Name; else this->_name = "";}
protected:
//если идентификатор равен -1, значит это либо временная переменная, либо константное значение
qint32 _id;
//константные или временные значения имен не имеют, только переменные.
QString _name;
};
class NSimpleDataTypes : NDataTypes
{
public:
NSimpleDataTypes() : NDataTypes() {this->_constvalue = false;}
bool ConstValue() const {return this->_constvalue;}
void setConstValue(bool ConstValue) {this->_constvalue = ConstValue;}
protected:
//это указывает на константное значение
bool _constvalue;
};
#endif // DATATYPES_H
И есть класс, который является производным от класса, являющегося производным от базового класса, в котором есть публик функции.
//Логический
class NLogical : NSimpleDataTypes
{
public:
NLogical(bool Value = false) : NSimpleDataTypes() {this->_value = Value;}
void setValue(bool Value) {this->_value = Value;}
bool Value() const {return this->_value;}
operator bool() {return this->Value();}
private:
bool _value;
};
Но вот следующий код не работает ссылаясь на то, что класс NSimpleDataTypes не является базовым классом для NLogical и что вызываемая публик функция из базового класса недоступна в ниже следующем контексте. Тоже самое происходит и в отношении публик функций класса NDataTypes по отношению к классу NLogical. А надо, чтобы все это наследовалось и было доступно для конечного производного класса. Т.к. класс NSimpleDataTypes используется для группировки классов простых типов данных, а класс NDataTypes для всех типов данных. В общем, что я сделал не так?!