小编Con*_*der的帖子

如何使A类成为B类的成员而不继承它?

我有两节课(实际上是四节课,但它们不是必需的)。让我们称它们为 A 和 B。我试图将类 B 声明为类 A 中的成员。我的问题是,我需要从类 B 访问类 A 内部的成员函数,但这对于这些没有意义两个类可以互相继承。

这是两个类:

A类:

#include "B.h"

class A {
    B test;
public:
    A() : test {this} {}

};
Run Code Online (Sandbox Code Playgroud)

B类:

#include "A.h"


class B: public Alert {
    A* test;
public:
    B() = default;
    B(A* testIn) : test{ testIn } {}

        // member functions
};

Run Code Online (Sandbox Code Playgroud)

我使用的是 Visual Studio Community Edition 2022(64 位)。我的 C++ 版本是 C++11。

我不断收到的编译器错误是“testIn 未声明的标识符”。这对我来说毫无意义,因为我觉得我已经声明了这一点。

我知道,将其中一个类作为另一个类的子类将允许子类访问父类的公共和受保护成员。

问题是,在这种情况下,它们相互继承是没有意义的。我只需要从类 B 访问类 A 内部的函数,因为类 A 继承自另一个类。我正在尝试编写一个库,并希望 A 类成为其他人可以使用的类。让 B 类作为最终程序中使用的类是没有任何意义的。这就是为什么我不想继承另一个的原因。

感谢您抽出时间查看我的问题。


更新:约翰在他自己提交的内容下面发布的解决方案对于我原来的问题是正确的。我只是个白痴,忘记了 …

c++ inheritance class undeclared-identifier c++11

2
推荐指数
1
解决办法
130
查看次数

标签 统计

c++ ×1

c++11 ×1

class ×1

inheritance ×1

undeclared-identifier ×1