c++:返回另一个类的函数中的对象
c++: Returning objects in functions of another class
我对c ++比较陌生,所以我不知道如何实现我的问题。我将示意图地呈现我的问题而不是实际的代码,希望这将提供其他用户也可以使用的通用解决方案。
我有:
-
在标头 A.h 中定义的类 A(具有正确的 A.cpp)
-
标头 B.h 中的 B 类(具有正确的 B.cpp)
在类 B 中,我有一个函数,它使用 A (objA) 的对象作为参数,对它执行某些操作,并返回此对象。
我应该如何定义该函数,以便类 B 识别其函数中的"类型"objA?它是用指针、模板完成的吗,...?
谢谢!罗兰德
有变体:
// 1) by value
// in B.h
#include "A.h"
class B {
public:
A foo(A a);
};
// in B.cpp
A B::foo(A a) { /* a.do_something(); */ return a; }
// 2) by reference
// in B.h
#include "A.h"
class B {
public:
void foo(A& a); // can modify a
void foo(const A& a); // cannot modify a
};
// in B.cpp
void B::foo(A& a) { // a.change_something(); }
void B::foo(const A& a) { // a.get_something(); }
// 3) by pointer
// in B.h
#include "A.h"
class B {
public:
void foo(A* a); // can modify a
void foo(const A* a); // cannot modify a
};
// in B.cpp
void B::foo(A* a) { // a->change_something(); }
void B::foo(const A* a) { // a->get_something(); }
你的headerB.h应该#include "headerA.h"
.这就足够了。
当然,如果要更改对象的状态,则应通过指针传递它,例如 void MyBMethod(objA* x);
.
相关文章:
- 如何使用单独文件中的派生类访问友元函数对象
- 当使用透明的std函数对象时,我们还需要写空的尖括号吗
- 有没有办法将重载的类函数绑定到函数对象?
- 将指针传递到成员的指针,从模板参数包到函数对象
- 如何在类模板的成员函数中正确调用函数对象?正在生成 Visual Studio 编译器错误 C2440
- 隐式转换为比较函数对象(函子)用于 std::sort 而不是 std::map?
- C++使用函数对象的线程,如何调用多个析构函数而不是构造函数?
- 如何通过接口将函子分配给函数对象
- 对std::函数对象的调用不匹配,该对象是指向成员函数的指针
- 指向std::invoke中成员函数对象的指针
- 如何成功地将函数对象(或lambda)传递给trackbar回调的第二个参数(void*)
- "std::function"的简单版本:函数对象的生存期?
- C++ 将函数对象作为左值和/或右值传递
- SFINAE 用于具有默认参数的函数对象
- 构造函数对象赋值是否泄漏内存
- 如何发送通过绑定到函数/方法创建的函数对象?
- std::for_each 与函数对象
- 将函数对象传递给 std::function
- 访问执行策略for_each函数对象中的迭代器
- 通过C++函数对象类访问参数