如何使用名称空间和类? 对不起,如果这是一个愚蠢的问题,但我正在学习C++(我通常用C语言编码),我不知道如何使用命名空间和类。它们是否必须在头文件中声明?如何在命名空间中声明函数?假设我正在处理一个包含不同文件的大型项目。我在一个文件中定义了一个名称空间,但是我想在同一个名称空间中添加更多的函数,但是这些函数是在另一个文件中定义的。那能做到吗?例如:
file1.cpp如何使用名称空间和类? 对不起,如果这是一个愚蠢的问题,但我正在学习C++(我通常用C语言编码),我不知道如何使用命名空间和类。它们是否必须在头文件中声明?如何在命名空间中声明函数?假设我正在处理一个包含不同文件的大型项目。我在一个文件中定义了一个名称空间,但是我想在同一个名称空间中添加更多的函数,但是这些函数是在另一个文件中定义的。那能做到吗?例如:,c++,namespaces,C++,Namespaces,file1.cpp namespace Example { int vartest; void foo(); } int othervar; void otherfoo(); // How can I add this and othervar to the Example namespace? namespace Example { int vartest; void foo(); } namespace Example { int othervar;
namespace Example {
int vartest;
void foo();
}
int othervar;
void otherfoo(); // How can I add this and othervar to the Example namespace?
namespace Example {
int vartest;
void foo();
}
namespace Example {
int othervar;
void otherfoo();
}
file2.cpp
namespace Example {
int vartest;
void foo();
}
int othervar;
void otherfoo(); // How can I add this and othervar to the Example namespace?
namespace Example {
int vartest;
void foo();
}
namespace Example {
int othervar;
void otherfoo();
}
谢谢 只需声明它是相同“名称”的等效名称1
名称空间
file1.cpp
namespace Example {
int vartest;
void foo();
}
int othervar;
void otherfoo(); // How can I add this and othervar to the Example namespace?
namespace Example {
int vartest;
void foo();
}
namespace Example {
int othervar;
void otherfoo();
}
file2.cpp
namespace Example {
int vartest;
void foo();
}
int othervar;
void otherfoo(); // How can I add this and othervar to the Example namespace?
namespace Example {
int vartest;
void foo();
}
namespace Example {
int othervar;
void otherfoo();
}
名称空间被合并
它们是否必须在头文件中声明
不可以。您可以在命名空间
中声明任何命名空间
。(注意,“全局范围”也是一个名称空间
)
如何在命名空间中声明函数
只需在命名空间中声明它即可。正如你所做的那样
假设我正在处理一个包含不同文件的大型项目。
我在文件中定义了一个名称空间,但是我想添加更多
函数,但这些函数是在中定义的
另一个文件。那能做到吗
合并同一名称空间中相同名称的名称空间
namespace X { void foo(){} }
namespace X { void foo(){} } //Error, redefinition of `foo` because the namespace ::X is merged
我记得所谓的“全局作用域”实际上是一个称为全局名称空间的名称空间,加上1作为全局名称空间的最后一个注释。由于您来自C,因此您可能会发现匿名名称空间是静态
的有用替代品<代码>名称空间{bool Ireturntrue(){return true;}}
现在被很好地隔离开来,在链接时不会增加名称污染。