c++ - 前向声明和类

标签 c++ class forward-declaration

我正在处理一种情况,我试图定义两个相互依赖的类。这是我正在尝试做的事情的一个简化示例。

class a{
public:
    int ia;
    int printb(b in){
        return in.ib;
    }
};

class b{
public:
    int ib;
    int printb(a in){
        return in.ia;
    }
};

这给了我未定义的 b 类错误。我试过了

class b;

class a{
public:
    int ia;
    int printb(b in){
        return in.ib;
    }
};

class b{
public:
    int ib;
    int printb(a in){
        return in.ia;
    }
};

但这并没有解决问题。有什么想法吗?

最佳答案

您所要做的就是将成员函数的实现保留在类定义之外。然后,您可以确保在实现成员之前定义了两个类:

class b;

class a{
public:
    int printb(b in);
    int ia;
};

class b{
public:
    int ib;
    int printb(a in);
};

int a::printb(b in){
        return in.ib;
    }
int b::printb(a in){
        return in.ia;
    }

关于c++ - 前向声明和类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35958890/

相关文章:

c++ - 使用 move 构造函数

c++ - 为什么自动对象的析构函数被调用两次?

c++ - 构造函数干扰成员变量指定初始化器?

php - 如何在 Laravel 4 中覆盖 View::make()?

c++ - 为什么我需要转发声明类 foo 而不是类 bar,即使 'foo.h' 和 'bar.h' 都包含在内?

c++ - "Implicit instantiation of undefined template"前向声明模板类时

C++11:typedef std::function 和参数本身

c++ - 如何将单链表变成双向链表

java - 重写子类中的方法

php - 将 css li 添加到 php?