编程C,C ++,Java,PHP,Ruby,图灵,VB
计算机科学加拿大 
编程C,C ++,Java,PHP,Ruby,图灵,VB  

用户名:   Password: 
 登记登记   
 呼叫抽象方法的抽象类
指数 -> 编程,C ++ -> C ++帮助
查看上一个主题 可打印的版本下载主题订阅本主题私人信息刷新页面 查看下一个主题
作者 信息
raknarg.




邮政发布: 2015年3月11日星期三11:26  帖子主题:呼叫抽象方法的抽象类

C:

#ifndef pirate_h.
#define pirate_h.

#包括"defs.h"

班级海盗 {
        private:
                //表示生成的下一个海盗的ID
                静止的 nextID;

                //海盗的id
                id;
                //海盗使用的空间
                space;

        protected:
                virtual generateSpace() = 0;

        public:
                Pirate();

                //返回海盗的身份证
                getID();
                //返回海盗使用的空间
                getSpace();

                //返回下一个ID并生成下一个ID
                静止的 getNextID();
};

#endif // pirate_h.


C:


#包括"Pirate.h"

海盗::Nextid. = 1001;

//随机生成的大小和程序生成的ID
海盗::海盗() {
        this->id = getNextID();
        this->Space = GeneratePace.(); //这是给我悲伤
}

//返回海盗的身份证
海盗::getid.() {
        返回 id;
}

//返回使用的海盗空间
海盗::getspace.() {
        返回 space;
}

//返回下一个ID,并生成一个新的ID。
海盗::getnextid.() {
        返回 (Nextid ++);
}


这导致上述线路上的错误:“pirate.o:pirate.cc :( text + 0x23):未定义引用”Pirate :: GeneratePace()“

在Java中,您可以这样做的东西。有没有办法让我能够在我的抽象类中调用纯虚函数?
赞助
赞助
赞助
赞助
Zren.




邮政发布: 2015年3月11日星期三12:59  帖子主题:Re:呼叫抽象方法的抽象类

要猜测,但是定义了实际功能,而不是将其分配为0工作?感觉像你分配一个指针值0,可能是函数的主体,这导致它打嗝。

例如(我不知道这是正确的语法):

C ++:

虚拟的 排队 generateSpace() { 返回 0; }


此外,我有内联的关键字我在一个项目中注意到我的贡献,尽管他们的内联函数没有虚拟。
可怕的




邮政发布: 2015年3月11日星期三下午2:48  帖子主题:Re:呼叫抽象方法的抽象类

我认为问题是父类'构造函数在子对象的构造函数之前调用,使其不清楚要调用的虚拟函数的子类版本。假设Angrapatate是海盗的子类,然后创建一个新的Anglexation将首先创建对象的海盗部分,然后创建AngrypiRate部分。如果我的猜测是正确的,你的虚拟函数在盗版的构造函数中被调用,不知道它应该调用angrypirate构造函数,因为该对象仍然只是海盗。

更好的解释:
http://stackoverflow.com/questions/3091833/calling-member-functions-from-a-constructor

基本上,您不应该从构造函数调用虚拟函数,而是只需为子类创建不同的构造函数。

编辑:拼写/解释
从上一个显示帖子:   
   指数 -> 编程,C ++ -> C ++帮助
查看上一个主题 告诉一个朋友可打印的版本下载主题订阅本主题私人信息刷新页面 查看下一个主题

11  [ 3 Posts ]
跳到:   


Style:  
搜索: