我有两个问题。
问题1:有人可以提供如何在命名空间中定义/重新定义变量的示例。我已经提供了你自己的猜测,以便你得到答案。
// namespace.hpp
namespace example
{
static string version;
static int x;
}
然后在.cpp中如何重新定义这些变量?
// namespace.cpp
namespace example
{
version = "0.1"; // ?????
x = 0; //???
}
问题2:如何将永久类对象从同一个.hpp文件附加到命名空间?像这样:
// namespace.hpp
class Idk
{
public:
int doThis();
}
namespace example
{
Idk idkObject;
}
上面的代码,当多次包含时(来自不同的文件)将替换该对象,这将导致编译错误。再一次,我需要一种永久的方法将对象附加到其头文件的命名空间。
答案 0 :(得分:1)
问题1:您还需要指定类型
// namespace.cpp
namespace example
{
string version = "0.1"; // ?????
int x = 0; //???
}
问题2:不管命名空间如何,都不应在头文件中创建“非静态”对象。你也应该在这里使用static,否则你应该在头文件中使用extern并在cpp文件中定义变量。 {注意它与模板化的类有点不同}
// namespace.hpp
class Idk
{
public:
int doThis();
}
namespace example
{
static Idk idkObject;
}
// namespace.cpp
namespace example
{
Idk idkObject; // Default constructor
}
答案 1 :(得分:1)
在头文件中写入“ extern”,而不是“ static”,并将数据类型包括在cpp文件的变量定义中。