2017-10-23 15 views
-1

を指す別のクラスの機能を使用しますクラスAのクラスBのcheckSomething()を呼び出しますが、もしこのポインタ(this-> numB)がnull(明らかに)になりますが、私はどのように修正するのか分かりませんt。 classA.cppクラスは、私は2つのクラスを以下している互いに

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

'ClassBの::'/'にClassA ::'を?? – user0042

答えて

0

あなたはこの方法は、静的行うことができますので、あなたはClassBのインスタンスなしでそれを呼び出すことができます。

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

次に、あなたが使用することによって、それを呼び出すことができます。

ClassB::checkSomethingA(); 

そうでない場合は、あなたがメソッドを呼び出すためにClassBのインスタンスを作成する必要があります。

ClassB test = new ClassB(); 
test.checkSomethingA(); 
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(); 
} 
関連する問題