在C类中存储指向istream和ostream的指针

前端之家收集整理的这篇文章主要介绍了在C类中存储指向istream和ostream的指针前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
game.h
#ifndef GAME_H
#define GAME_H
#include <string>
#include <iostream>
#include "piece.h"

using namespace std;

class Game
{
    private:
        string white;
        string black;
        string title;
        istream* in;
        ostream* out;
    public:
        Game();
        Game(istream&,ostream&);
        void display(Colour,short);
};

#endif

game.cpp

#include <iostream>
#include <string>
#include <sstream>
#include "game.h"
#include "board.h"
#include "piece.h"

using namespace std;

Game::Game()
{
    //nothing
}

Game::Game(istream& is,ostream& os)
{
    in = is;
    out = os;
}

void Game::display(Colour colour,short moves)
{
    //out << "a";
}

我正在尝试在我班级的其他部分使用istream和ostream,但我不能因为g不会让我参考进来.有什么想法吗?

解决方法@H_502_12@
您只需要一个引用变量,而不是指针.
class Game
{
    private:
        ...
        istream& in;
        ostream& out;
    public:
        Game(istream&,ostream&);
};

Game::Game(istream& is,ostream& os)
    : in( is ),out( os )
    { }

由于一些语言怪癖,现有代码编译:

> istream / ostream可以使*无效,以允许您检查其错误状态

if( in ) { do_something( in ); }

>你的编译器显然允许将void *转换为ostream *(我相信错误,你应该至少得到一个警告).

猜你在找的C&C++相关文章