class Element
{
private:
std::vector<unsigned long> iParameter;
public:
unsigned long getParameter(int index) { return iParameter[index]; }
};
protected переменные и наследование
Приведу упрощенный кусочек программы:
class Element
{
protected:
std::vector<unsigned long> iParameter;
public:
std::vector<Element*> Content;
.....
};
class Cascad: public Element
{
public:
void connect();
...
};
void Cascad::connect()
{
int nx1=Content
->iParameter[0];
}
Компилятор жалуется на то, что нету доступа к protected члену класса.
Оно в принципе и понятно. Но как сделать так, чтобы доступ был, не перенося iParameter в категорию public? Желательно без использования friend, но все предложения выслушаю. Заранее спасибо.
Наоборот в принципе не понятно - протектед как раз и служит для этих целей. Ищи ошибку в проге.
Можно сделать geter - метод возвращающий либо значение, либо ссылку на элемент контейнера, либо сам контейнер, все зависит от задачи.
Например:
Код:
Кстати, сам по себе protected - не лучшее решение.
Protected дает возможность доступа к членам родительского класса из данного класса, но не доступ к полям экземпляров родительского класса.
Поэтому пример и не рабочий.