c++:返回另一个类的函数中的对象

c++: Returning objects in functions of another class

本文关键字:函数 对象 返回 另一个 c++      更新时间:2023-10-16

我对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); .