-1

我将尝试正确地表达这一点。如果需要,请要求澄清。

我有一个类(我们称之为a 类),它有一个方法可以用ifstream 打开一个文件并从文件中读取数据。我还有另一堂课(我们称它为 b 类)。我需要从a类中获取该信息并将其传递给b类。执行此操作的方法是从类 b 调用的。我以为我可以

  1. 声明从 a->b 继承
  2. 声明友元函数或
  3. 只需在 b 类中声明一个 var,类型为 a 类,然后使用 a.function 运行函数。

但无论如何,结果总是输出一个?如果我自己运行 a 类,它工作正常(读取数据并输出数据)。

您不能在类之间使用 infile.get 运行函数吗?

4

1 回答 1

0

通常,您应该在 2 个类之间定义一个 API。在这种情况下,您的 API 可以是 B 类中的一个方法,该方法期望从 A 类中调用您需要传输的数据。像这样的东西:

//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 回答