2014-01-11 2 views
1

Мне нужно наследовать защищенные элементы базового класса и сохранить в качестве защищенного в производном тоже. Для примера: базовый класс имеет функции set() и get(), и они также должны быть защищены в производном. Проблема в том, как они защищены в производных так, как получить доступ.Доступ к защищенному наследованию

На самом деле я пытаюсь сделать это:

#include<iostream> 
#include<string> 
using namespace std; 
class Animal 
{ 
protected: 
    string name; 
    void setName(string a){ name = a; } 

    void getName(){ cout << name << endl; } 


}; 
class Cat :public Animal 
{ 
public: 
     Cat(string dc){ 
     setName(dc); 
} 
     void printName(){ getName(); } 
}; 
class Dog :public Animal 
{ 
public: 

    Dog(string dc2){ 
    setName(dc2); 
    } 

    void printName(){ getName(); } 
}; 
int main() 
{ 
    Cat c("Mano"); 
    c.printName(); 
    Dog d("Tommy"); 
    d.printName(); 

    system("pause"); 
    return 0; 
} 
+1

Вы хотите, чтобы они были защищены в производном классе, но проблема в том, что они защищены в производном классе? Что вы на самом деле пытаетесь сделать? Может быть, небольшой образец кода поможет. – juanchopanza

+0

Если вы создаете член 'protected' в базовом классе, почему вы хотите, чтобы он был« public »в производном классе? Если вы хотите, сделайте член 'public' в базовом классе! –

+0

Я попытался установить значение с помощью конструктора, а затем попытался с публичной функцией, но эта вещь не помогает. Много ошибок. – affanBajwa

ответ

-2

Вы хотите, чтобы наследовать класс как это:

class dog: public pet 
{ /* ... */ } 

Посмотрите, как доступность работает под «режимах доступности и наследования» here.

+0

Не отвечает на вопрос! –

+0

Вы наследуете защищенные как общедоступные. Но наследование должно быть защищено. – affanBajwa

+0

#include using namespace std; класс Cpolygon { \t защищены: \t \t ширина ИНТ, высота; \t общественности: \t \t недействительными input_values ​​(интермедиат один, два Int) \t \t { \t \t \t ширина = один; \t \t \t высота = два; \t \t} }; класс Ctriangle: защищенный Cpolygon { \t общественности: \t \t ИНТ область() \t \t { \t \t \t возвращение (ширина * высота/2); \t \t} }; что-то вроде этого – affanBajwa

Смежные вопросы