如何让两个不同的对象方法相互用作参数
How to Have Two Different Object Methods Use Each Other as Paramters
header.h
class Foo{
public:
void fooFunction(std::map <std::string, Bar> &);
}
class Bar{
public:
void barFunction(std::map <std::string, Foo> &, Foo &);
}
当我尝试编译它时,我收到一个错误,说 Bar 未在 fooFunction 范围内声明,当我切换声明的顺序时,我收到一个错误,说 Foo 不在 barFunction 范围内。
我怎样才能使它们在彼此的范围内?如果我需要多个头文件,我应该如何在我的 makefile 和 #include s 中进行设置?
您只需在标头中转发声明需要它的另一个类:
class Bar;
class Foo
{
public:
void fooFunction(std::map <std::string, Bar>&);
};
class Bar
{
public:
void barFunction(std::map<std::string, Foo>&, Foo &);
};
前提是在定义Bar
之前,Foo
不会在任何地方使用 Bar
by 值,这就可以了。 这意味着将其存储为成员,作为参数传递,返回该类型的值。 在这种情况下,您很好,因为Foo
参数是通过引用传递的。
请注意,即使您的std::map
按值存储类型 Bar
,这仍然可以,因为它是一个模板,并且在使用它之前不会解析,此时将定义Bar
。
相关文章:
- 使用std::函数映射对象方法
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 按对象的特定方法按升序排列的C++优先级队列
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 从父类方法返回子类对象
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 为什么此派生对象无法访问基类的后递减方法?
- c++, 在子类中,如何在没有对象的情况下访问父类的方法?
- 正在调用shared_ptr对象方法
- 将方法转换为调用该方法的成员函子对象会导致崩溃
- 检查哪个对象调用了另一个对象的对象方法
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 直接在 unordered_map 的方法中使用哈希,而不是生成哈希的用户定义对象
- 没有取消引用/解包对象的标准方法?
- 使用 gmock c++ 在真实对象上调用方法
- 当我调用对象的方法时,对象的成员会发生变化
- 根据对象类调用不同的方法
- 如何在C++中循环访问未知对象方法?
- 使用动态实例化的对象填充矢量的快速方法
- 对类中的对象使用方法