私は C++ の初心者で、複数の名前空間を同時に処理する方法を理解するのに苦労しています。私の MVC アプリケーションでは、ビューはアクションを転送するためにコントローラーへの参照を必要としますが、コントローラーは何かを表示するためにビューへの参照を必要とします。
アプリケーションからほとんどすべてを削除しましたが、名前空間と宣言されていない識別子に関する多くのコンパイル エラーがまだ残っています。これは削除されたコードです:
#ifndef _geometria
#define _geometria
namespace core_stuff {
/*this namespace contains Model and Controller */
class Model {
public:
Model();
//void doSomething();
};
class Controller {
public:
Controller();
void setView(ui_stuff::View v);
};
}
namespace ui_stuff {
/*this namespace contains View and other UI classes libraries, not included here because I am semplifying the whole stuff */
class View {
public:
View();
void setController(core::Controller c);
};
}
#endif
これが実装です:
#include "geometria.h"
#include <iostream>
//implementation of core_stuff namespace
core_stuff::Model::Model() { }
core_stuff::Controller::Controller() { }
void core_stuff::Controller::setView(ui_stuff::View v) {
//do some kind of operation in my view
}
//implementation of ui_stuff namespace*/
ui_stuff::View::View() { /* */ }
void ui_stuff::View::setController(core_stuff::Controller c) {
//do some kind of operation on the controller
}
/* main */
int main (int nArgs, char* args[]) {
core_stuff::Model m;
core_stuff::Controller c;
ui_stuff::View v;
v.setController(c);
c.setView(v);
}
コンパイル エラーの非常に長いリストの最初のエラーには、
void setView(ui_stuff::View v);
ヘッダー ファイルの次の行で、ui_stuff 名前空間にアクセスできません:
行 (20): エラー C2653: 'ui_stuff' はクラスまたは名前空間の名前ではありません
これを修正するにはどうすればよいですか?