【发布时间】:2012-03-29 14:58:55
【问题描述】:
我已经阅读了我在以下链接中找到的所有建议
- c++ typedef another class's enum?
- 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
- How do I use the Enum value from a class in another part of code?
但仍然无法解决我的问题:
我需要构造一个
class A的对象(其构造函数期望作为输入 从class B的对象的函数内部参数该类的枚举类型)
这里是sn-ps的代码:
文件 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){
...
}
文件 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);
}
通过尝试运行主程序,我在函数foo_func 行的B.cpp 文件中的编译器收到此错误:
对‘(A)的调用不匹配 (std::basic_string, B::FileType&)’
这意味着我没有使用正确的枚举类型来调用A class 构造函数,但是我该如何解决这个问题?
我做错了什么?
【问题讨论】:
-
objectOfClassB.foo_func("file_path", A::FileType::TEXT);或objectOfClassB.foo_func("file_path", B::FileType::TEXT);或objectOfClassB.foo_func("file_path", objectOfClassB.FileType::TEXT); -
说真的,您发布的链接有答案。
-
@R.MartinhoFernandes 请阅读所有问题,因为在 B.h 引用中我说它不起作用!
-
A::TEXT,A::BIN,就像他们使用ns::cls::black而不是ns::cls::color::black的链接之一。 -
@R.MartinhoFernandes 这行不通!我不知道为什么它总是给出相同的错误..我在发布之前尝试了几种解决方案..