簡體   English   中英

C ++ cin和cout不在控制台中顯示

[英]C++ cin and cout not showing in console

我已經與一些朋友開始了一個游戲項目,我們試圖弄清楚為什么我們的班級沒有顯示任何輸出。 我們包含了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()函數時,它會在斷點和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;
}

關於iostream在您的代碼中沒有問題。 這是我嘗試運行您的代碼的方式,並且運行良好。 查看您的構造函數和析構函數。 確保構造函數實現。 請參考以下代碼。

#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;
}

我認為您的構造函數有問題。 這是一個快速解決方案,不確定確切要發生什么。 但是您一無所獲,因為默認的構造函數沒有分配給那些變量。

#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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM