私が構築しているアプリケーションの一部としてネストされたクラスを使用したいと思います。私は(私はこの質問のためにいくつかのコードを含まれるヘッダファイルを、)持っているコードの最初の部分は以下の通りです:C/C++ - 入れ子クラスEnclosingクラスを継承しています
class Window {
public:
indev::Thunk32<Window, void (int, int, int, int, void*)> simpleCallbackThunk;
Window() {
simpleCallbackThunk.initializeThunk(this, &Window::mouseHandler); // May throw std::exception
}
~Window();
class WindowWithCropMaxSquare;
class WindowWithCropSelection;
class WindowWithoutCrop;
virtual void mouseHandler(int event, int x, int y, int flags, void *param) {
printf("Father");
}
private:
void assignMouseHandler(CvMouseCallback mouseHandler);
};
class Window::WindowWithCropMaxSquare : public Window {
public:
WindowWithCropMaxSquare(char* name);
virtual void mouseHandler(int event, int x, int y, int flags, void *param) {
printf("WWCMS");
}
};
class Window::WindowWithCropSelection : public Window {
public:
WindowWithCropSelection(char* name);
virtual void mouseHandler(int event, int x, int y, int flags, void *param) {
printf("WWCS");
}
};
class Window::WindowWithoutCrop : public Window {
public:
WindowWithoutCrop(char* name);
virtual void mouseHandler(int event, int x, int y, int flags, void *param) {
printf("WWOC");
}
};
は今、私はMAINでWindowWithCropMaxSquare
クラスをインスタンス化し、mouseHandler
機能を実行したいです。私は
Window::WindowWithCropMaxSquare *win = new Window::WindowWithCropMaxSquare("oopa");
win->mouseHandler(1,1,1,1,0);
を持ってMAINで
しかし、これはリンクの段階で問題が発生します。次のエラーが発生しました:
Error 1 error LNK2019: unresolved external symbol "public: __thiscall Window::WindowWithCropMaxSquare::WindowWithCropMaxSquare(char *)" ([email protected]@@[email protected]@Z) referenced in function _main c:\Users\Nicolas\documents\visual studio 2010\Projects\AFRTProject\AFRTProject\AFRTProject.obj
この問題を解決する方法を教えてもらえますか?
どこにでもコンストラクタを実装していますか? –
いいえ、私はまだそれ以外のものは実装していません。/ –
コンストラクタは実装する必要がありますが、空にすることができます(つまり '{}')。 –