我有两节课:
#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;
}
答案 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();
}