我已经和一些朋友开始了一个游戏项目,我们试图弄清楚为什么我们的班级没有显示任何输出。我们已经包含了SDL 2.0(只要你知道,如果它很重要)
问题是我们有一个继承和填充的类......
class Tile {
private:
int textureId;
public:
Tile();
Tile(int texId);
~Tile();
void Print_Data();
}
class Tile_Gun : public Tile {
private:
int damage;
public:
Tile_Gun();
Tile_Gun(int texId, int dmg);
~Tile_Gun();
void Print_Data();
}
这是基础设置。我想为两者运行Print_Data()。 我在main()中创建了一个对象,并设置了断点来控制数据,这些数据似乎都停止并填充了预期的区域。但是当它启动Print_Data()函数时,它会在断点处的couts和cins处停止(它运行它)但是没有任何东西被添加到控制台。
发生了什么事,如果你需要更多信息,请告诉我......(我以为我现在可以保持尽可能短的时间)
我如何称呼课程:
int texId = 0, dmg = 5;
Tile_Gun testgun = Tile_Gun(texId, dmg);
//The 0 passed to the parent constructor with Tile::Tile(texId)
testgun.Print_Data();
编辑:
void Tile::Print_Data() {
int dummy;
cout << "My texId is: " << textureId;
cin >> dummy;
}
void Tile_Gun::Print_Data() {
int dummy;
cout << "My damage is: " << damage;
cin >> dummy;
}
答案 0 :(得分:0)
代码中的 iostream 没有问题。这是我试图运行你的代码的方式,&amp;它工作得很好。看看你的构造函数和析构函数。确保构造函数实现。请参阅以下代码。
#include "stdafx.h"
#include <iostream>
using namespace std;
class Tile {
protected:
int textureId;
public:
Tile(){
}
Tile(int texId)
{
textureId = texId;
}
// ~Tile();
void Print_Data();
};
void Tile::Print_Data() {
int dummy;
cout << "My texId is: " << textureId;
cin >> dummy;
}
class Tile_Gun : public Tile {
private:
int damage;
public:
Tile_Gun()
{
}
Tile_Gun(int texId, int dmg)
{
damage = dmg;
textureId = texId;
}
// ~Tile_Gun();
void Print_Data();
};
void Tile_Gun::Print_Data() {
int dummy;
cout << "My damage is: " << damage<<endl;
cin >> dummy;
cout<<"I have taken input: "<<dummy<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
int texId = 0, dmg = 5;
Tile_Gun testgun = Tile_Gun(texId, dmg);
//The 0 passed to the parent constructor with Tile::Tile(texId)
testgun.Print_Data();
return 0;
}
答案 1 :(得分:-1)
我认为您的构造函数存在问题。这是一个快速修复,不确定你想要发生什么。但是你没有得到任何东西,因为默认的构造函数没有分配给那些变量。
#include<iostream>
class Tile {
private:
int textureId;
public:
Tile();
Tile(int texId);
void Print_Data();
};
Tile::Tile() {
textureId=0;
}
Tile::Tile(int texId) {
textureId=texId;
}
class Tile_Gun : public Tile {
private:
int damage;
public:
Tile_Gun();
Tile_Gun(int texId, int dmg);
void Print_Data();
};
Tile_Gun::Tile_Gun() {
damage=0;
}
Tile_Gun::Tile_Gun(int texId, int dmg) {
damage=dmg;
}
void Tile::Print_Data() {
int dummy;
std::cout << "My texId is: " << textureId;
std::cin >> dummy;
}
void Tile_Gun::Print_Data() {
int dummy;
std::cout << "My damage is: " << damage;
std::cin >> dummy;
}
void main() {
int texId = 0, dmg = 5;
Tile_Gun testgun = Tile_Gun(texId, dmg);
//The 0 passed to the parent constructor with Tile::Tile(texId)
testgun.Print_Data();
}