Я пытаюсь унаследовать name,skeletonType и numLegs из моего базового класса в мой производный класс. У меня есть базовый класс с именем Беспозвоночные и производный класс с именем Паук. Я хочу иметь возможность использовать частные переменные с производным классом из моего базового класса. Я продолжаю получать ошибку компиляции в строке 47, и перед ',' написано ожидаемое первичное выражение.
Я пытаюсь, чтобы мой вывод выглядел так:
Spider:Brown Recluse, number of legs = 8, skeleton type = EXOSKELETON
Может ли кто-нибудь помочь мне и указать мне в правильном направлении, пожалуйста. Вот что я собрал до сих пор.
// invertebrates.h
// invertebrate specifications
#ifndef _INVERTEBRATE_H_
#define _INVERTEBRATE_H_
#include <iostream>
using namespace std;
enum Skeleton_Type { NONE, HYDROSTATIC, EXOSKELETON };
class Invertebrate {
private:
string name;
Skeleton_Type skeletonType;
int numLegs;
protected:
void setSkeletonType(Skeleton_Type skeletonType);
void setNumLegs(int numLegs);
public:
Invertebrate();
Invertebrate(string name, Skeleton_Type skeletonType, int numLegs);
string getName();
Skeleton_Type getSkeletonType();
int getNumLegs();
virtual void print() = 0;
};
class Spider : public Invertebrate {
private:
const string NAME_PREFIX = "Spider: ";
public:
Spider();
Spider(string name);
virtual void print();
};
#endif // _INVERTEBRATE_H_
**********************************************************************
//invertebrates.cpp
#include "invertebrate.h"
void Invertebrate::setSkeletonType(Skeleton_Type skeletonType)
{
this->skeletonType = skeletonType;
}
void Invertebrate::setNumLegs(int numLegs)
{
this->numLegs = numLegs;
}
Invertebrate::Invertebrate()
{
name = "noName";
skeletonType = NONE;
numLegs = 0;
}
Invertebrate::Invertebrate(string name, Skeleton_Type skeletonType, int numLegs)
{
this->name = name;
this->skeletonType = skeletonType;
this->numLegs = numLegs;
}
string Invertebrate::getName()
{
return this->name;
}
Skeleton_Type Invertebrate::getSkeletonType()
{
return this->skeletonType;
}
int Invertebrate::getNumLegs()
{
return this->numLegs;
}
Spider::Spider(string name):Invertebrate(name,EXOSKELETON,8)
{
name = Invertebrate::getName();
}
void Spider::print()
{
string strSkType = "";
if(this->getSkeletonType() == 0)
strSkType= "none";
else if(this->getSkeletonType() == 1)
strSkType= "Hydrostatic";
else if(this->getSkeletonType() == 2)
strSkType= "exoskeleton";
cout << this->NAME_PREFIX + getName();
cout << ", number of legs = " << this->getNumLegs() << ", skeleton type = " << strSkType << endl;
}
int main()
{
Spider *sp = new Spider("Brown Recluse");
sp->print();
return 0;
}
protectedфункции доступа. Или, если нет инварианта или других ограничений на значения, просто сделайте переменные-членыprotected- person Cheers and hth. - Alf   schedule 30.11.2016Spider::Spider(string name):Invertebrate(name&,EXOSKELETON,8)Как вы думаете, что означаетname&? - person n. 1.8e9-where's-my-share m.   schedule 30.11.2016