你好我正在用C ++做一个项目(特定的Tizen平台),我很陌生。如何实现返回结构的函数,该结构在单独的头文件中定义?我以为你会像下面的代码那样去做。
FileName.h
1. typedef struct StructName {
2. int hello;
3. int there;
4. int friend;
5. Foo(int num) : hello(99), there(25) {
6. friend = num;
7. }
8. } StructName;
9.
10. virtual StructName FunctionName(void);
第10行返回类型StructName上函数的前向解除似乎正确引用FileName.h文件中的结构。
FileName.cpp
1. #include FileName.h
2.
3. StructName FunctionName(void) {
4. int n = 5;
5. StructName s(n);
6. return s;
7. }
我收到的错误是 FileName.cpp中的第3行上的“未知类型名称'StructName'”。
但是,第5行上的FileName.cpp中的StructName似乎正确引用到头文件中的结构。
我一直在尝试在Stack Overflow上阅读类似的问题,但没有一个答案解决了我的问题。
例如,
如果我在函数的返回类型(在两个文件中)和FileName.cpp中的函数中返回变量s之前添加关键字'struct',我会收到另一个错误:
和
答案 0 :(得分:1)
适用于我的解决方案可能与Tizen相关,因为我之前在Stack Overflow上没有看过任何有关此解决方案的帖子(并且Tizen不常见)。如果有人能够证实或否认这将是伟大的。
无论如何,我的朋友提出的解决方案是在FileName.cpp中指定的函数的返回类型前添加'FileName ::'(FileName.h中不需要)完整的解决方案发布在下面解决问题的重点( FileName.cpp中的第3行)。
FileName.h
1. typedef struct StructName {
2. int hello;
3. int there;
4. int friend;
5. Foo(int num) : hello(99), there(25) {
6. friend = num;
7. }
8. } StructName;
9.
10. virtual StructName FunctionName(void);
FileName.cpp
1. #include FileName.h
2.
3. FileName::StructName FunctionName(void) { // <- Adding 'FileName::' infront of
4. int n = 5; // the return type fixed the problem
5. StructName s(n);
6. return s;
7. }