类原型设计
Class prototyping
本文关键字:原型 更新时间:2023-10-16
我已经在类a中放入了几个类b的实例,但这会导致一个错误,因为类a不知道b是什么。
现在我知道我可以通过编写文件b a c来解决这个问题,但这既破坏了可达性,也让我很恼火。我知道我能对函数进行原型化,所以我没有这个问题,但是我找不到关于如何对类进行原型化的材料。
有人有c++中类原型的例子吗。
由于似乎有些混乱,让我给你看看我想要什么
class A
{
public:
B foo[5];
};
class B
{
public:
int foo;
char bar;
}
但这不起作用,因为A看不到B,所以我需要在它们之前放一些东西,如果它是一个函数,我会放A();然后再执行。我怎么能在课堂上做到这一点。
您可以声明所有类,然后以任何顺序定义它们,如下所示:
// Declare my classes
class A;
class B;
class C;
// Define my classes (any order will do)
class A { ... };
class B { ... };
class C { ... };
您正在寻找声明。
class A;
class B {
A MakeA();
void ProcessA(A a);
};
class A {
B bs[1000];
};
如果你转发声明一个类,你可以
declare functions taking and returning it or complex types made of it
declare member variables of pointer or reference to it
这基本上意味着,在任何情况下,如果B中没有A的实例,反之亦然,您应该能够声明和定义A和B之间的任何接口。
解决循环依赖关系的常用方法是使用前向声明:
// Bar.h
class Foo; // declares the class Foo without defining it
class Bar {
Foo & foo; // can only be used for reference or pointer
};
// Foo.h
#include <Bar.h>
class Foo {
Bar bar; // has full declaration, can create instance
}
您可以在另一个文件中提供完整的声明和定义。使用正向声明,可以创建指向类的指针和引用,但不能创建它的实例,因为这需要完整声明。
class b;
class a { public: b * inst1; }; class b{ .... };
这是你需要的吗?
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 功能原型的目的
- getline() 的原型/库是什么;
- 具有enable_if外部类原型的模板类构造函数定义
- 函数如何通知用户它基于函数原型抛出异常?
- 在C++中包含原型文件的正确方法是什么?
- 在函数中拥有函数原型的目的是什么?
- 什么..(省略号)作为函数原型中唯一的函数参数,C++?
- 是否可以使用 libclang python 解析 cpp 文件中没有标头的函数原型
- 如果原型是本地的,则使用流 I/O C++类型约束将失败
- 如何进行原型消息交叉引用?
- 有没有办法在C++编译时更改函数原型?
- 省略函数原型中的返回类型
- 在 linux 原因上运行自定义原型插件
- 为什么以及如何使用原型设计模式
- 您是否必须随项目一起交付原型文件?
- 如何在C++中遍历谷歌原型地图?
- 错误:'EM::EM(...)' 的原型与类 'EM' 中的任何原型都不匹配
- 功能原型,没有定义
- 如何使用 "using" 关键字定义函数原型/签名