我有一个在网络上执行模拟的程序。
我所有的类和实现都在 h 文件中,我试图从 main.cpp 调用我的类的函数(它们在 h 文件中)。
我在类里面使用枚举,从 main.cpp 调用的 c'tor 采用枚举值。我一直收到错误,因为每次我更改声明位置时 cpp 或 h 文件都不知道这些枚举。
1.是否应该在我的类(class)内宣布?外部?在cpp和h文件中?
2.如果我还希望类的方法能够使用枚举类型,我应该把声明放在哪里?
3. 从 cpp 文件和类的方法中获取枚举类型的正确方法是什么?我看到了几个选项,例如 ClassName::enumType、CLassName.enumType 等等。
这是我的代码结构:
main.cpp
#include...
enum networkType {X,Y};
int main(){
//create instances of my class
network n = new network(X, ...);
}
networks.h
//enum networkType {X, Y}; here?
class network{
enum networkType {X, Y}; //here?
network::network(networkType x, ...) //c'tor
..
//members:
networkType type_;
//functions that use the enumerated value
void setNetworkType(networkType t);
networkType getNetworkType();
...more methods
我遇到的一些错误是 - 对于 getter 方法 - 'networkType' 没有命名类型 网络类型网络::getNetworkType()
谢谢。
最佳答案
如果将 enum
定义放在类中,则枚举的实际名称是 network::networkType
。任何时候在类范围之外时都必须使用全名(包括类外部成员函数定义的返回类型,除非您使用尾随返回类型)。
network::networkType network::getNetworkType()
{ return _type; }
(请注意,如果您在 main.cpp 中也有 enum network
,如您所示,那是不同且不兼容的类型。)
关于c++ - 在 cpp 和 hpp 文件中,在整个程序使用的 c++ 中在哪里声明枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43696426/