C ++使用已经实例化的对象

时间:2016-12-06 14:59:07

标签: c++

C ++中有没有办法让编译器首先从类中实例化一个对象,这样我就可以在另一个类中使用它了。或者处理这个问题的优雅方式是什么?

例如:

class A { int x; A() { //x is being read from a file } void printX(); };

B.h

class B { void somefunction() { objectA.printX(); } }

main.cpp

main() { A objectA; ... B objB; objB.somefunction(); }

{{1}}

1 个答案:

答案 0 :(得分:2)

您只需要向对象B传递对您尝试使用的对象的引用,例如......

注意:当您将对象作为不仅仅是POD的函数参数传递时,如果您不修改它们,最好通过常量引用传递它们(这样您就不会复制它们整个对象,可能很大,你只需传递一个指针)。但是在这种情况下,因为它现在是一个const引用,所以你只能调用const函数,这就是我创建printX const的原因。据推测printX不是修改A,所以它应该是const。

A.h

class A
{
   int x;
   A() 
   { 
      //x is being read from a file 
   }
   void printX() const;
};

B.h

class B
{
   void somefunction(const A& objectA) 
   {
      objectA.printX();
   }
}

main.cpp

main()
{
   A objectA;
   ...
   B objB;
   objB.somefunction(objectA);
}