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

标签 c++ function class object types

我是 C++ 的新手,所以我不知道如何解决我的问题。 我将示意性地展示我的问题而不是实际代码,希望这将提供其他用户也可以使用的通用解决方案。

我有:

  • 在 header A.h 中定义的类 A(及其适当的 A.cpp)

  • header 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(); }

关于c++:在另一个类的函数中返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19753447/

相关文章:

c++ - 使用 std::set_intersection 时,哪个集合用于将值复制到目标集合中?

C/C++ 错误 : Pointer variable undefined inside function

使用递归函数确定数字是否为素数的 C 程序

java - 是否可以结合这些方法? (Java泛型)

c++ - 使用线程类在C++中构造线程的动态数组时出错

c++ - 跨 2 个进程而不是线程锁定自由/原子操作

c++ - Qt:如何在非事件窗口中显示选定的文本

python - 如何在 Maya 中使用 Def Function 字符串

c++ - 您如何将 CreateThread 用于作为类成员的函数?

vba - 如何使类变量在VBA中的模块之间持久存在