类使用另一个指向彼此的类的函数

时间:2017-10-23 16:43:11

标签: c++ visual-studio

我有两节课:

#ifndef CLASS_A_H
#define CLASS_A_H

class B;

class A{
public:
  bool checkSomethingA();
private:
  int numA;
protected:
  B* classB;
};
#endif 

#ifndef CLASS_B_H
#define CLASS_B_H
#include "ClassA.h"

class B {
public:
    bool checkSomeThing();      
private:
    int numB;
    A* classA;
};
#endif
ClassB.cpp中的

bool ClassB::checkSomething()
{
    if (this->numB > 0)
        return true;
    else
        return false;
}

我想在classA中调用classB的func checkSomething()但如果我这样做,那么这个指针(this-> numB)将为null(显然),但我不知道如何解决它。

在classA.cpp

bool ClassA::checkSomethingA()
{
    if (classB->checkSomeThing())
        numA == 100
    else
        numA == 0;
}

2 个答案:

答案 0 :(得分:0)

您可以将方法设置为静态,因此您可以在没有ClassB实例的情况下调用它。

static bool ClassB::checkSomethingA(){...}

然后你可以使用:

来调用它
ClassB::checkSomethingA();

否则,您需要创建一个ClassB实例来调用该方法。

ClassB test = new ClassB();
test.checkSomethingA();

答案 1 :(得分:0)

您可能需要以下内容:

class B;

class A{
public:
  explicit A(B& b) : classB(&b) {} // Constructor to initialize classB
  bool checkSomethingA() const;
private:
  int numA = 42;
protected:
  B* classB = nullptr;
};

class B {
public:
    bool checkSomeThing() const { return (this->numB > 0); }    
private:
    int numB = 42;
    A* classA = nullptr;
};

bool ClassA::checkSomethingA() const
{
    if (classB->checkSomeThing())
        return numA == 100
    else
        return numA == 0;
}

然后

int main()
{
    B b;
    A a(b);

    bool b1 = b.checkSomeThing();
    bool b1 = a.checkSomethingA();
}