我需要一些设计和返回结构的帮助。我做过类似的结构,但出现错误:



我怎样才能解决这个问题?


#include<stdio.h>
struct a {
   int i;
   vector<abc> j;
};

高度
#include <a.h>
class c{
private:
    a a_;
    virtual bool execute();
    void compute(&a a1)
public:
    a function_name();
}

抄送
#include<b.h>
c::execute()
{
  a aa_ = function_name();
}

抄送
#include<b.h>
c::a c::function_name()
{
   compute(a_);
   return *a_;
}

最佳答案

b.h包括a.ha是全局范围内的类型,a不能神奇地继承c命名空间

如果在c::a声明中声明了a,则需要c:

class c{
private:
  struct a {

因此,解决方法是从c::a中删除 namespace :
a c::function_name()

注意:此处使用的命名约定(如果有的话)无助于理解这些示例。

还:void compute(&a a1)不编译,应该是void compute(a &a1),并且return *a_;应该返回引用,所以return a_;

关于c++ - 类中的struct不是类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49104823/

10-10 11:17