我已经阅读了以下链接中所有的建议:
- c++ typedef另一个类的枚举?
- http://forums.devarticles.com/c-c-help-52/how-to-use-enum-when-it-is-in-another-class-17773.html
- http://forums.codeguru.com/showthread.php?t=435215
- 如何在代码的另一部分中使用来自类的Enum值?
但仍无法找到解决我的问题的方法:
我需要从
class B
的函数内部构造class A
的对象(其构造函数期望该类的枚举类型作为输入参数)
以下是代码片段:
A.h文件:
Class A{
public:
enum FileType{TEXT, BIN};
/*! This constructor initializes the data from a given file
* (binary, text, image).
*/
A(const std::string& filename, FileType type);
}
文件 A.cpp:
A::A(const std::string& filename, FileType type){
...
}
File B.h:
Class B{
private:
A objectOfClassA;
public:
enum FileType{TEXT = A::FileType::TEXT, BIN = A::FileType::BIN}; //<----THIS IS NOT WORKING!
foo_func(const std::string& filename, FileType type);
}
文件 B.cpp:
void B::foo_func(const std::string& filename, FileType type){
this->objectOfClassA(filename, type); //should construct an object of class A
... //do stuff with objectOfClassA
}
文件 main.cpp:
int main(int argc, char** argv) {
B objectOfClassB;
objectOfClassB.foo_func("file_path", foo_func.TEXT);
}
尝试运行主程序时,我从编译器在B.cpp文件中的
foo_func
函数行处获得了以下错误信息:
这意味着我没有使用正确的枚举类型来调用no match for call to ‘(A) (std::basic_string, B::FileType&)’
A class
构造函数,但是我该如何解决这个问题?我做错了什么?
A::TEXT
,A::BIN
,就像其中一个链接中使用的ns::cls::black
一样,而不是ns::cls::color::black
。 - R. Martinho Fernandes