-1

私はこれを適切に表現しようとします。必要に応じて説明を求めてください。

ifstream でファイルを開き、ファイルからデータを読み取るメソッドを持つクラス (クラス a と呼びます) があります。また、別のクラスがあります (クラス b と呼びます)。クラス a からその情報を取得し、クラス b に渡す必要があります。これを行うメソッドは、クラス b から呼び出されています。できると思った

  1. a->b からの継承を宣言する
  2. フレンド関数を宣言するか、
  3. クラス a を型としてクラス b で var を宣言し、a.function を使用して関数を実行するだけです。

しかし、何があっても、結果は常に ? を出力します。クラス a を単独で実行すると、正常に動作します (データを読み取り、データを出力します)。

クラス間で infile.get を使用して関数を実行できませんか?

4

1 に答える 1

0

一般に、2 つのクラス間で API を定義する必要があります。この場合、API は、転送する必要があるデータを使用してクラス A から呼び出されることを期待するクラス B のメソッドにすることができます。このようなもの:

//B header file
struct dataType;
class B
{
    //...
public:
    statusType passData(dataType &x);
};

//A header file
struct dataType   //shared data type between the 2 classes
{
    //internal structure of your data
};

class A
{
    B *objB;   //link to B instance (the receiver)
    statusType acquireData();
};

//cpp file
#include "A.h"
#include "B.h"
statusType B::passData(dataType &x)
{
    //do whatever you need with the data
}

statusType A::acquireData()
{
    //do your reading from file here into x
    objB.passData(x);
}

この例は、A クラスと B クラスの間の単純なインターフェースの作成を示しています。継承や構成など、他のより緊密な関係も可能ですが、それは実際には要件に依存し、あなたが述べたよりも強い関係を意味します。そうしないと、(機能する場合でも) 設計上の欠陥になります。

于 2012-11-01T06:42:09.680 に答える