返回在单独的头文件中定义的Struct:未知类型名称

时间:2014-12-11 16:45:46

标签: c++ struct tizen

你好我正在用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',我会收到另一个错误:

  • 'FileName :: FunctionName'的外联定义与返回类型中的声明不同


  • 没有可行的从'struct StructName'(又名'FileName :: StructName')转换为'struct StructName'(又名'StructName')

1 个答案:

答案 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.  }