C ++通过引用传递 - 可以这样做吗?

时间:2012-04-05 13:48:30

标签: c++ function reference

我有几个导致编译错误的文件,可以执行以下操作吗?

那么header1.h

class Class1{
public:
void function1(Class1 &);
};

header2.h

class Class2{
public:
void function2(Class2 &, Class1 &);
};

cpp2.cpp

#include "header2.h"
void Class2::function2(Class2 & my2Class, Class1 & my1Class){};

的main.cpp

#include "header1.h"
#include "header2.h"

// functions

该错误表明header2.h不知道Class1是什么类型。如何在此头文件中声明类型为Class1的对象,而不使用include或不将两个类放在同一个文件中(它们是完全独立的,只应满足main中调用的内部函数)?

谢谢!

2 个答案:

答案 0 :(得分:7)

您可以使用前向声明:

class Class1; //forward declare Class1
class Class2{
public:
void function2(Class2 &, Class1 &);
};

将类型的参数传递给函数不需要完全定义类型。

答案 1 :(得分:0)

让每个标题包含它需要信息的每个其他标题,但使用预处理定义以避免循环引用或重复声明。例如 header2应该是

#ifndef FUNCS_H

#define FUNCS_H

#include "header1.h"

    class Class2{
    public:
    void function2(Class2 &, Class1 &);
    };
#endif

这就是我在C ++中完成所有标题的方法

相关问题