类中的结构不是一种类型

struct in class is not a type

本文关键字:一种 类型 结构      更新时间:2023-10-16

我需要一些关于设计和返回结构的帮助。我已经做了类似类型的结构,但收到一个错误说:

"类 c 中的 a 不是一种类型">

我该如何解决这个问题?

A.H

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

B.H

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

b.cc

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

d.cc

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

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

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

class c{
private: 
  struct a {

所以解决方法是从c::a中删除命名空间:

a c::function_name()

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

另外:void compute(&a a1)不编译,应该void compute(a &a1)return *a_;应该返回一个引用,所以return a_;