pme*_*son 2 c++ namespaces reference
所以这就是我所拥有的:
//graphics.hpp
#include guard
extern camera_c default_camera;
namespace graphics {
camera_c &camera = default_camera;
};
#endif
//graphics.cpp
camera_c default_camera(ctor stuff);
Run Code Online (Sandbox Code Playgroud)
//main.cpp
#include <graphics.hpp>
int main() {
do stuff with graphics::camera;
}
Run Code Online (Sandbox Code Playgroud)
这给了我
main.o: multiple definition of graphics::camera
graphics.o: first defined here
Run Code Online (Sandbox Code Playgroud)
我也尝试过
camera_c &&camera = camera_c(ctor stuff);
Run Code Online (Sandbox Code Playgroud)
这给了我同样的错误,但来自main.cpp和graphics.cpp
是否有一些可行的方法来引用该命名空间中的类?或者我应该只使用指针?理想情况下它应该是一个参考,但这可能是不可能的.
你误解了这个错误.
该错误告诉您main.cpp和graphics.cpp都包含了违反One Definition Rule的 graphics.hpp .
也是这个变量extern:
namespace graphics {
extern camera_c &camera;
};
Run Code Online (Sandbox Code Playgroud)
并仅在一个源文件中定义它.
namespace graphics {
camera_c &camera = default_camera;
};
Run Code Online (Sandbox Code Playgroud)