是否可以使用相同的基类从另一个派生对象访问派生对象
Is it possible to access a derived object from another derived object both using the same base class?
我有一个抽象的基础Object
类和两个派生类:Paddle
和Ball
。 Paddle
的构造函数接受指向Ball
的指针作为参数,以便我可以获取它的位置来计算桨的运动:
Paddle::Paddle(Vec location, Vec size, float AIspeed, Ball* prtBall)
: Object(location, size)
{
/* ... */
gameBall = ptrBall;
}
IntelliSense不会将其标记为无效,但是每当我编译代码时,VS2013都会意外地抛出以下错误:
1>objectpaddle.h(8): error C2061: syntax error : identifier 'Ball'
1>objectpaddle.h(43): error C2143: syntax error : missing ';' before '*'
1>objectpaddle.h(43): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>objectpaddle.h(18): error C2065: 'gameBall' : undeclared identifier
1>objectpaddle.h(18): error C2065: 'ptrBall' : undeclared identifier
1>objectpaddle.h(30): error C2065: 'gameBall' : undeclared identifier
前两个特别有趣...从外观上看,编译器无法识别Ball*
是一种类型。第 8 行是上面的行,这些是第 40-44 行:
private:
void Foo();
Ball* gameBall;
float bar;
起初我以为我忘了在文件paddle.h
中包含Ball
的定义。但事实并非如此。我正在做的事情是否正确,还是目前存在被忽视的缺陷?
是的,前提是对同级数据成员或方法的访问权限是公共的。
同级无权访问其他同级的私有或受保护的数据方法和数据成员。
您可以在父类中创建虚拟方法。 然后,一个同级可以通过父级(通过函数)获取数据;但正如我所了解到的,当你直接与你的兄弟姐妹交谈而不是通过父母时,生活会更好。:-)
相关文章:
- 为什么此派生对象无法访问基类的后递减方法?
- 如何在新的派生对象中获取基本对象的数据?
- 如何将成员函数作为参数传递并在派生对象上执行方法列表
- 在没有默认构造函数的情况下创建的派生对象
- OOP 标识派生对象
- 如何创建派生对象的向量?
- 将基类分配给派生对象,反之亦然,以C++以及静态和动态对象之间的差异
- 如何从 Gtk::窗口调用派生对象的析构函数
- 无法在派生对象上运行虚拟函数
- 尝试删除指向派生对象的基指针时断言错误
- 存储在一个通用容器中的派生对象.如何避免铸造
- 将派生对象分配给函数内的基类指针
- 替换派生对象向量中的对象"no matching function to call"
- 派生对象调用的 Base 方法的模板推导
- 用于填充 Base 和派生对象的 shared_ptr 向量的函数模板
- C++ UBSAN 对派生对象产生误报
- 如何验证我是否正在使用C++中的基对象或派生对象
- C++ 构造函数和派生对象
- 将派生对象传递给模板
- 指向派生作品的基本指针,即使派生对象不存在