C++,变量,抽象/虚拟类 请帮助我,我对目标C++很陌生,我不知道如何正确地获得变量iCijaTyWa。 我不知道怎么了。有可能我不完全理解虚拟类和抽象类,所以我很乐意解释我的错误。 我希望程序使用Organizmy类中的指针,从我的对象Wolf输出inicjatywa的值(值=5) class Organizmy { public: int inicjatywa; virtual void akcja() = 0; virtual void kolizja() = 0; virtual void rysowanie() = 0; virtual ~Organizmy(){}; }; class Animal: public Organizmy { public: int inicjatywa; virtual void akcja() = 0; virtual void kolizja() = 0; virtual void rysowanie() = 0; virtual ~Animal(){}; }; class Wolf: public Animal { public: int inicjatywa; Wolf(){ cout << "Crate Wolf" << endl; this->inicjatywa = 5; }; ~Wolf(){}; void akcja(){}; void kolizja(){}; void rysowanie(){ cout << "W" << endl; cout << this->inicjatywa << endl; // here he output 5 }; }; int main() { Organizmy *b; // I create new poiter; type Organizmy b=new Wolf(); // He is now pointing new object Wolf b->rysowanie(); // here he outputs correct value of the new elemnt cout<<b->inicjatywa<< endl; //but here the code outputs -8421.... //and it should be 5 not -8421.... } 类组织 { 公众: int inicjatywa; 虚空akcja()=0; 虚拟void kolizza()=0; 虚空rysowanie()=0; 虚拟~organizemy(){}; }; 班级动物:公共组织 { 公众: int inicjatywa; 虚空akcja()=0; 虚拟void kolizza()=0; 虚空rysowanie()=0; 虚拟~Animal(){}; }; 狼类:公共动物 { 公众: int inicjatywa; 狼(){ 有几件事。先把你的函数命名为有意义的东西,这些名字都是胡言乱语,对这里的任何人都毫无意义
其次,您的错误非常简单。“Wolf”和“Animal”类不需要重新声明“inicjatywa”,只要它们将“Organizmy”的继承声明为公共的(“外部世界”)就会看到“Organizmy”的所有公共元素。代码如下所示:C++,变量,抽象/虚拟类 请帮助我,我对目标C++很陌生,我不知道如何正确地获得变量iCijaTyWa。 我不知道怎么了。有可能我不完全理解虚拟类和抽象类,所以我很乐意解释我的错误。 我希望程序使用Organizmy类中的指针,从我的对象Wolf输出inicjatywa的值(值=5) class Organizmy { public: int inicjatywa; virtual void akcja() = 0; virtual void kolizja() = 0; virtual void rysowanie() = 0; virtual ~Organizmy(){}; }; class Animal: public Organizmy { public: int inicjatywa; virtual void akcja() = 0; virtual void kolizja() = 0; virtual void rysowanie() = 0; virtual ~Animal(){}; }; class Wolf: public Animal { public: int inicjatywa; Wolf(){ cout << "Crate Wolf" << endl; this->inicjatywa = 5; }; ~Wolf(){}; void akcja(){}; void kolizja(){}; void rysowanie(){ cout << "W" << endl; cout << this->inicjatywa << endl; // here he output 5 }; }; int main() { Organizmy *b; // I create new poiter; type Organizmy b=new Wolf(); // He is now pointing new object Wolf b->rysowanie(); // here he outputs correct value of the new elemnt cout<<b->inicjatywa<< endl; //but here the code outputs -8421.... //and it should be 5 not -8421.... } 类组织 { 公众: int inicjatywa; 虚空akcja()=0; 虚拟void kolizza()=0; 虚空rysowanie()=0; 虚拟~organizemy(){}; }; 班级动物:公共组织 { 公众: int inicjatywa; 虚空akcja()=0; 虚拟void kolizza()=0; 虚空rysowanie()=0; 虚拟~Animal(){}; }; 狼类:公共动物 { 公众: int inicjatywa; 狼(){ 有几件事。先把你的函数命名为有意义的东西,这些名字都是胡言乱语,对这里的任何人都毫无意义,c++,virtual,abstract,C++,Virtual,Abstract,其次,您的错误非常简单。“Wolf”和“Animal”类不需要重新声明“inicjatywa”,只要它们将“Organizmy”的继承声明为公共的(“外部世界”)就会看到“Organizmy”的所有公共元素。代码如下所示: class Organizmy { public: int inicjatywa; virtual void akcja() = 0; virtual void kolizja() = 0; virtual void rysowanie() =
class Organizmy
{
public:
int inicjatywa;
virtual void akcja() = 0;
virtual void kolizja() = 0;
virtual void rysowanie() = 0;
virtual ~Organizmy(){};
};
class Animal: public Organizmy
{
public:
virtual void akcja() = 0;
virtual void kolizja() = 0;
virtual void rysowanie() = 0;
virtual ~Animal(){};
};
class Wolf: public Animal
{
public:
Wolf(){
cout << "Crate Wolf" << endl;
inicjatywa = 5;
};
~Wolf(){};
void akcja(){};
void kolizja(){};
void rysowanie(){
cout << "W" << endl;
cout << inicjatywa << endl; // here he output 5
};
};
int main()
{
Organizmy *b; // I create new poiter; type Organizmy
b=new Wolf(); // He is now pointing new object Wolf
b->rysowanie(); // here he outputs correct value of the new elemnt
cout<<b->inicjatywa<< endl; //but here the code outputs -8421....
//and it should be 5 not -8421....
}
类组织
{
公众:
int inicjatywa;
虚空akcja()=0;
虚拟void kolizza()=0;
虚空rysowanie()=0;
虚拟~organizemy(){};
};
班级动物:公共组织
{
公众:
虚空akcja()=0;
虚拟void kolizza()=0;
虚空rysowanie()=0;
虚拟~Animal(){};
};
狼类:公共动物
{
公众:
狼(){
请阅读编辑帮助(编辑器中的问号显示它),特别是关于格式化代码的部分。我不知道你的问题是什么?Objul-C或C++。实际上哪一个?“我不知道如何正确地获得变量iCijaTyWa……”我甚至不能正确理解它的语义,那么我应该如何帮助呢?A用英语写,并且描述您的特定错误消息/输入/预期输出将大大改进您的问题。感谢您提供如何正确提问的建议,这是我在这里的第一个问题,所以我会改进,但我仍然需要帮助;/@Bliseq好吧,您已经有了一个通过按照我给你的建议编辑它,这是一个改进的机会。非常感谢,我为那些名字感到抱歉,我用我的母语编程,下次我会做得更好。如果我想得到帮助,下次还有什么我应该想到的吗?啊,是的,那会更有意义……想想看,我想我从来没有见过代码编写英语以外的十个词……我唯一要说的是不要过度使用虚拟函数(你似乎不在这里),例如,假设你有一个“getWeigth()”函数。这对于所有Organizmy对象都是一样的,并且不需要重载,因为实现是在Wolf、Animal和Organizmy之间共享的。您在提供的代码中使用virtual似乎已经足够了。