C++でメソッド(関数)の呼び出し
あるクラス(ClassA)のメソッド(methodA)から別のメソッド(methodB)を呼び、 更にそのメソッドが別のクラス(ClassB)のメソッド(methodC)を呼んでいる場合。
【ClassA】
ClassB clsB;
int methodB (){
return clsB.methodC ();
}
void methodA (){
methodB ();
}
【ClassB】
class ClassB{
public:
int methodC (){
return 1;
}
};
上記のように記述すると(Xcodeの場合)Apple Mach-O Linker Errorが発生します。
呼び出し元であるmethodAから、別のクラスにあるmethodCが認識できないということのようです。
結果としては、methodCを以下のように変更してやることでエラーは発生しなくなりました。
int ClassB::methodC (){
return 1;
}
最初の書き方でも、methodCを呼ぶまでエラーは起きないのでややこしいですが、クラスのメンバ関数は [戻り値 クラス名::メソッド名()]とする必要がある、と。
なお、ヘッダファイルで上記メソッドに[クラス名::]を追加するとエラーになるため、実装ファイルでの記述と異なりますが、特に問題はないようです。