gpt4 book ai didi

c++ - 在命名空间中引用是否可行?

转载 作者:搜寻专家 更新时间:2023-10-31 00:00:01 26 4
gpt4 key购买 nike

这就是我所拥有的:

//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);

//main.cpp

#include <graphics.hpp>

int main() {
do stuff with graphics::camera;
}

这给了我

main.o: multiple definition of graphics::camera
graphics.o: first defined here

我也试过

camera_c &&camera = camera_c(ctor stuff);

这给了我同样的错误,但是来自 main.cppgraphics.cpp

所以我的问题是

是否有一些可行的方法来引用该命名空间中的类?还是我应该只使用指针?理想情况下,它应该是一个引用,但这可能是不可能的。

最佳答案

您误解了错误。

错误告诉您 main.cpp 和 graphics.cpp 都包含 graphics.hpp,这违反了 One Definition Rule .

也使该变量extern:

namespace graphics {
extern camera_c &camera;
};

并在仅一个源文件中定义它。

namespace graphics {
camera_c &camera = default_camera;
};

关于c++ - 在命名空间中引用是否可行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14418346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com