我怎样才能做到这一点?类调用彼此的函数(包括 - 向前异常)

时间:2013-05-10 10:55:06

标签: pointers include

我想通过另一个类的指针从类A调用Foo()函数 (我不能包含其他类的标题,因为我在其他类上执行此操作,因此它会导致一个,,包含它自己''错误)

//a.h


class X; // here I can't include "x.h", so forward declaration, but that results incomplete type

class A
{
 X* ptr;

 void Example()
 {
  X->Foo();    // it can't be use, casue ,,incomplete type is not allowed''
 }


 void Print();
}

//x.h
#include "a.h"

class X
{
 A* ptrarray[];

 void Foo();

 void List()
 {
  for (i...)
    ptrarray[i]->Print();  // ok, works fine
 }
}

我如何解决这个问题,你能给我任何建议吗?

2 个答案:

答案 0 :(得分:0)

在另一个文件中定义Foo()和void List()。并将X和A作为第一个参数传递给它们。 当你在那里定义它们时,你不会得到不完整类型的错误,因为编译器会提前得到它们的定义。 所以thrid文件看起来像

// wrapper.h
include <a.h>
include <x.h>

void Foo(X *objX, ....);
void List(A *objA, ....);

//wrapper.cpp
void Foo(X *objX, ....)
{
  objX->Foo(....);  
}

void List(A *objA, ....)
{
  objA->List()l
}

答案 1 :(得分:0)

您正在做的错误是您在.h文件本身中定义类成员函数。 因此,请在相应的a.cpp和x.cpp中声明它们在类声明之外。并在a.cpp和x.cpp中添加a.h和x.h.好吧,如果你希望它们是内联的,你可以在定义类声明之外的时候添加内联,