C++继承问题
C++ inheritance trouble
最近我一直在用C++制作游戏,在尝试使用继承时遇到了麻烦。
我想做的是创造汽车和一个玩家,这也是某种形式的汽车。这两件事都需要一个x和y位置,一个获取这些位置的方法和一个渲染。由于我希望代码具有良好的质量,所以我只想写一次代码。我在以下实体文件中做了部分工作:http://pastebin.com/nceanyQD
实体标题:http://pastebin.com/CLTv9B0Y
然后我在汽车标题中有这个:http://pastebin.com/T9v0WGKd
最后,在Car文件中:http://pastebin.com/CJ5wnby5
当我运行这段代码时,它会出现几个错误。首先在Player.h的实体行下面告诉我:实体基类未定义。
以下代码中的游戏文件中的另一个错误(渲染和更新所有内容):
Car Game::getCarAtLocation(int x, int y)
{
vector<Car>::iterator iter = cars.begin();
for(iter = cars.begin(); iter != cars.end(); ++iter)
{
if(iter->getX() == x)
{
if(iter->getY() == y)
{
return *iter;
}
}
}
return NULL;
}
它告诉我getY和getX不是Car的成员。然而,相同的getY和getX在运算符<lt;Car文件本身过载。
最后,我在Entity.h文件中得到的最后一个错误是"class"类型的重新定义。
我做错了什么?我该如何解决?
如果需要任何其他代码,可以在这里下载。https://dl.dropboxusercontent.com/u/59067404/BalCab.zip
第二个错误很简单-迭代器必须是"const",因为getY()和getX()有const修饰符。
vector<Car>::const_iterator iter = cars.begin();
类内轿厢超载操作员<lt;工作是因为汽车参数"const">
friend ostream& operator<<(ostream& os, const Car car);
以及为什么在Car.cpp中更改您所写的过载操作员的签名:
ostream& operator<<(ostream& os, Car car) ......
必须与申报相同
ostream& operator<<(ostream& os, const Car car)
将include guard添加到头文件或放入
#pragma once
在标题的开头
Entity.h文件是"class"类型的重新定义。
意味着编译器将显示文本
class Entity { [...] };
不止一次。
您可以将include语句视为复制粘贴。你在中写的所有内容
file.h
将被复制粘贴到任何具有语句的文件中
#include "file.h"
当您调用编译器时(按下IDE中的build/make按钮)
如果你的源文件现在有
#include "Car.h"
#include "Entity.h"
编译器现在将拥有Entity定义的两个副本。
- 混合组合和继承的C++问题
- 运算符继承和 cpp 核心准则 c.128 的问题
- 类继承,ENUM 与 AST 类实现的问题
- C++ 多级虚拟继承编译问题
- 如何解决此问题(基础模板和继承)
- 模板继承问题
- C++ 继承向量问题(无限循环+在其他类中使用向量的问题)
- 我是否需要在虚拟继承类的构造函数中初始化基类以解决菱形继承问题?
- 继承此C++代码有什么问题
- 一个关于继承和引用的C++问题
- C++继承和"常量"交互的问题
- 在钻石问题的求解中,为什么要虚拟地继承两次grand-parent类
- C++的抽象类继承和构造函数的问题
- C++:继承和列表函数作为类成员的问题
- SIGSEGV 因为基/派生类的继承问题
- 关于异常继承中的语法的问题
- C++继承的类设计问题
- 关于继承和覆盖的问题
- C++ 构造函数问题 // 继承的类
- 对复制构造函数的c++ OOP程序问题?继承