热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

类继承中的C++变量不起作用

如何解决《类继承中的C++变量不起作用》经验,为你挑选了1个好方法。

有人可以解释,为什么:

a-> b.edge = 10;

没有工作并返回错误:

错误:'class Colider'没有名为'b'的成员

是因为当我在Colider上有指针时,我不能用它指向Colider_Triange类吗?

码:

#include 
#include 

using namespace std;

typedef struct
{
    float x;
    float y;
} position;

class Colider
{
    public:
        unsigned int type;
};

class Colider_Triangle: public Colider
{
public:
    position edge1;
    position edge2;
    position edge3;
};

Colider_Triangle::Colider_Triangle()
{
    edge1.x = 1;
}

class Colider_Sphear: public Colider
{
    public:
    position pos;
    unsigned int r;
};

int main(){

    Colider* a;
    a = new Colider_Triangle;
    a->b.edge = 10;
    delete(a);
    return 0;
}

eerorika.. 6

有人可以解释,为什么:

a->b.edge = 10;

没有工作并返回错误:

error: ‘class Colider’ has no member named ‘b’

解释很简单:

    a是指向该类型的指针Colider.

    Colider没有成员的名字b.

    您已经编写了子表达式a->b,只有Colider具有名为的成员才能使用b.

      和3.有冲突.

是因为当我在Colider上有指针时,我不能用它指向Colider_Triange类吗?

不可以.您可以使用指向基类型的指针指向派生类型的对象.


delete(a);

这是另一个错误:除非声明基类的析构函数,否则通过指向基类的指针删除对象的行为是未定义的virtual.



1> eerorika..:

有人可以解释,为什么:

a->b.edge = 10;

没有工作并返回错误:

error: ‘class Colider’ has no member named ‘b’

解释很简单:

    a是指向该类型的指针Colider.

    Colider没有成员的名字b.

    您已经编写了子表达式a->b,只有Colider具有名为的成员才能使用b.

      和3.有冲突.

是因为当我在Colider上有指针时,我不能用它指向Colider_Triange类吗?

不可以.您可以使用指向基类型的指针指向派生类型的对象.


delete(a);

这是另一个错误:除非声明基类的析构函数,否则通过指向基类的指针删除对象的行为是未定义的virtual.


我赞赏这种努力,但是回答一开始没有意义的问题有什么意义呢?将来这有谁帮助?
推荐阅读
  • [置顶]        C++类的构造函数与析构函数的调用顺序
    1构造函数的调用顺序[1]构造函数按此顺序执行工作:按声明顺序调用基类和成员构造函数。如果类派生自虚拟基类,则会将对象的虚拟基指针初始化。如果类具有或继承了虚函数,则会将对象的虚函数指针初始化。 ... [详细]
  • Igotthiscode(IknowitsinSpanishIcantranslateifneeded)wheretheygivemethefunctionS ... [详细]
  • C++简单单向链表实现
    #include?pch.h#include?创建链表typedef?struct?ListTable?{int?nElement;????链表元素int?nSequence;???节点序号ListTable?* ... [详细]
  • ProblemA.MonsterPathCodejamonisamobilegameinwhichmonstertrainer ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • 本文介绍了Codeforces Round #321 (Div. 2)比赛中的问题Kefa and Dishes,通过状压和spfa算法解决了这个问题。给定一个有向图,求在不超过m步的情况下,能获得的最大权值和。点不能重复走。文章详细介绍了问题的题意、解题思路和代码实现。 ... [详细]
  • STL学习笔记--数值算法
    数值算法  C++STL的数值算法(Numericalgorithms)是一组对容器元素进行数值计算的模板函数,包括容器元素求和accumulate、两序列元素的内积inner_pro ... [详细]
  • C++ 类的 this 指针 语法练习5
    #include<iostream>#include<string>usingnamespacestd;定义一个类Studentclass ... [详细]
  • 字符串的题目用库函数往往能大大简化代码量介绍几个常用的C的字符串处理库函数strtok()原型char*strtok(chars[],constchar*delim); ... [详细]
author-avatar
zf19920222
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有