我是 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”不是类或命名空间的名称
我该如何解决这个问题?