由于类类型的转换错误,因此无法通过

克劳斯

我在两个不同的文件中定义了以下两个类:

#include "B.h"
class A {
 public:
  A() {}
  ~A() {}
  f() {
   auto b = new B(this);
  }
};

并在另一个文件中:

#include "A.h"
class B {
 public:
  B(A* a) {}
  ~B() {}
}

但是我不明白我得到的编译错误:

B.h: error: ‘A’ has not been declared
A.cpp: error: no matching function for call to ‘B(A&)‘
                                                      *this);
              note: candidate is:
              note: B(int*)
              note: no known conversion for argument 1 from ‘A’ to ‘int*’

为什么我的A类已经转换为int了?

songyuanyao

这是一个重大的依赖问题。B.h包括A.h,并且A.h包括B.h

实际上,您不需要#include "A.h"in B.h这里A不需要完整的类型(即,将其用作函数声明中的参数类型),正向声明就足够了。

class A;  // forward declaration

class B {
 public:
  B(A* a) {}
  ~B() {}
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

由于类型错误IntegrityError的对象无法通过JSON序列化,因此无法使用DRF将数据插入模型

由于没有隐式引用转换,因此无法将类型用作类型参数

由于静态类型不能用作类型参数,因此无法通过Viewmodel显示文件

由于出现“找不到符号类X”错误,因此无法在Intellij Idea中编译Java类

由于缺少程序集(.NET核心),因此无法通过MetadataLoadContext检查类型

由于类型转换错误,无法将JSON数组分组

由于无法显示设计,因此无法在android studio中实例化一个或多个类错误

由于Kryonet中重复的类定义,因此无法编译项目

由于“”不包含“ GetEnumerator”的公共定义,因此foreach语句获取错误无法对类型为“”的变量进行操作

由于在渲染方法中调用了 onClick 方法,因此出现“无法在现有状态转换期间更新”错误

由于Firebase云功能存在某些错误,因此无法付款

Mink中的XPath错误:无法对“文档”执行“评估”:结果不是节点集,因此无法转换为所需的类型

尝试打开新表单时,由于显示错误消息“错误的运算符或@function时间/日期的数据类型不正确”,因此无法读取该字段

由于类型错误,无法通过标签删除某些单元格

流:由于流无法确定对象文字的类型,因此无法传播对象文字

由于每个代码路径都会导致错误,因此无法确定元数据。查看先前的错误

无法删除PostgreSQL角色。错误:由于某些对象依赖它,因此无法删除`

由于“无法将序列乘以'numpy.float64类型的非整数”而无法容纳数据”错误

由于抽象类,无法通过类添加方法

由于某些中间构造函数,因此无法使用类型为MySuperClass <B>的封闭实例

由于不支持URL类型http,因此无法打开文件

由于缺少@XmlRootElement批注,因此无法将类型封送为XML元素

由于主键属性“ id”为空,因此无法跟踪类型的实体

由于其保护级别,因此无法解析System.RuntimeType。只能处理公共类型。

由于“方法未覆盖其超类的方法”错误,因此单击事件不起作用

无法转换类型错误的值

由于具有JSoup,因此无法在cmd终端中找到或加载主类

由于“没有兼容的呼叫签名”,因此无法在打字稿中使用类名

由于找不到“列表”强制转换,因此无法使用sass命令行