calling a member function of different class from another class

后端 未结 2 1795
花落未央
花落未央 2021-01-03 09:45

I have two classes A and B. The control is inside one of the member functions of class A. The member function calculates a result and i now want to send this value to one of

相关标签:
2条回答
  • 2021-01-03 09:58

    After seeing your comment:

    The compiler throws "No matching function call B::B()"

    That means, there is no default constructor for class B. In your implementation, B`s constructor must be taking parameter.

    So either you add a default constructor to your class, or you pass the argument to your constructor when creating an instance of it.

    0 讨论(0)
  • 2021-01-03 10:11

    Your second attempt:

    int memberFunctionOfA()
    {
    ... //results are stored in some temporary value, say temp
    
        B obj;
        obj.memberFunctionOfB(temp);
    }
    

    ..., looks perfectly valid. We will need the definition of B to help further. B's definition should minimally have, assuming that the member function in B is non-static:

    class B
    {
    public:
      void memberFunctionOfB(const TypeOfTemp &temp);
    };
    
    // Later in class A's definition
    class A
    {
    public:
      int memberFunctionOfA()
      {
        ... //results are stored in some temporary value, say temp
    
        B b;
        b.memberFunctionOfB(temp);
      }
    };
    

    If the member function in B is static, then this should work:

    class B
    {
    public:
      static void memberFunctionOfB(const TypeOfTemp &temp);
    };
    
    ...
    
    class A
    {
    public:
      int memberFunctionOfA()
      {
        ... //results are stored in some temporary value, say temp
    
        B::memberFunctionOfB(temp);
      }
    };
    
    0 讨论(0)
提交回复
热议问题