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

时间:2013-11-03 13:27:46

标签: c++ function class object types

我对c ++比较陌生,所以我不知道如何实现我的问题。 我将示意性地展示我的问题,而不是实际的代码,希望这将提供其他用户也可以使用的一般解决方案。

我有:

  • 在标题A.h中定义的A类(具有适当的A.cpp)

  • 标题B.h中的B类(具有适当的B.cpp)

在这个B类中,我有一个函数,它使用A(objA)的对象作为参数,用它做一些事情,然后返回这个对象。

我应该如何定义该函数,以便B类在其函数中识别出“type”objA? 它是用指针​​,模板完成的吗??

谢谢! Roeland

2 个答案:

答案 0 :(得分:0)

您的headerB.h应为#include "headerA.h"。这就足够了。

当然,如果您要更改对象的状态,则应该通过指针传递它,例如void MyBMethod(objA* x);

答案 1 :(得分:0)

有变种:

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