使用类类型向量进行前向声明 - 不允许指向不完整类类型的指针

2023-12-27

我有两节课,foo and bar.

foo.h #includes bar.h 并包含一个std::vector的指针bar对象。在运行时的某个时刻,bar必须访问这个指向其他指针的向量bar对象。所以,foo包含一个名为getBarObjects()返回指针数组。

因此,我谨此声明foo在 bar.h 中。我显然还必须转发声明我正在使用的方法 -foo::getBarObjects()。因为这将返回指针数组bar,我就陷入了恶性循环。

我无法转发声明栏,然后简单地转发声明getBarObjects(),因为这会导致“不允许不完整的类型名称”。

foo.h:

#include "bar.h"
#include <vector>

class foo {
    public:
         foo();
         ~foo();
         std::vector<bar*> getBarObjects();
    private:
         std::vector<bar*> barObjects;
}

bar.h:

class foo;
std::vector<bar*> foo::getBarObjects();        // error, doesn't know bar at this point

class bar {
    public:
        bar(foo *currentFoo);
        ~bar();
        bool dosth();
    private:
        foo *thisFoo;
}

bar.cpp:

#include "bar.h"

bool bar(foo *currentFoo) {
    thisFoo = currentFoo;
}

bool bar::dosth() {
    thisFoo->getBarObjects();        // error, pointer to inomplete class type is not allowed
}

如果我只是以相反的方式包含,我也会遇到同样的问题foo稍后的。有什么建议么?


您无法转发声明成员。

反而,bar.cpp should #include both foo.h and bar.h。问题解决了。

一般来说,如果您使用以下序列:

  • 前向声明所有类类型
  • 定义所有类类型
  • 班级成员团体

一切都会好起来的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用类类型向量进行前向声明 - 不允许指向不完整类类型的指针 的相关文章

随机推荐

  • 行尾短语的正则表达式

    我正在抓取一个文本块 在该块中将有一行包含以 WITH PASSWORD kEqHqPUd 结尾的短语 其中 kEqHqPUd 是动态生成的密码 用于仅获取其中密码的简单正则表达式是什么 我正在使用 PHP preg match WITH
  • 在 C# 中验证 DLL

    我有一个 exe 它使用 Castle Windsor 来实现插件机制 我需要验证我加载的插件是否来自我 而不是一些恶意代码 我相信我需要使用非对称密钥 可能是 SNK 对 exe 和 dll 进行签名 首先 这是正确的吗 我该怎么做 其次
  • Android Clipboard.getText() 已弃用;那么如何获取其中的文本项呢?

    这工作正常 准确地向我展示了放入 Android 剪贴板的最后一个字符串是什么 它恰好是euswcnmst Log w clip clipboard getText toString But getText已弃用clipboard对象 同时
  • Apple 推送通知 - PHP - SSL 操作失败,代码 1

    在过去的几天里 当我们使用套接字连接到生产服务器上的 APN 服务器时 我们遇到了一些奇怪的 PHP 行为 大多数情况下 有效负载的推送不会出现任何错误 并且客户端会收到通知 然而 在某些情况下 我们开始收到 PHP 错误 即使我们收到错误
  • 如何在 C++ 中克隆对象?或者还有其他解决方案吗?

    我编写了一个堆栈和队列实现 基于链表 有一个栈 bigStack 比如我分开bigStack 例子 stackA and stackB I pop 一个节点来自bigStack I push in stackA 以同样的方式 我push i
  • 如何使用子进程Popen.communicate()方法?

    我正在尝试将 bash 命令的标准输出作为 Python 中的字符串获取 下列的Popen https docs python org 2 library subprocess html subprocess Popen文档 我已经尝试过
  • 如何在 Django 中聚合单个查询集?

    简短的介绍 给定一个查询集myQueryset 我该如何选择max myfield 没有实际检索所有行并执行max在Python中 我能想到的最好的是max r myfield for r in myQueryset values myfi
  • CSS3中有没有办法为列指定不同的宽度?

    我想使用 CSS 来呈现两列布局 我正在使用的标记是这样的 div style margin left 20px margin top 20px div picture box div div name div div 有没有办法让一列的宽
  • 是否可以在越狱的ios上使用外部键盘模拟触摸事件?

    是否可以在 iOS 越狱以及越狱涉及的所有元素上模拟特定屏幕坐标中的触摸事件 按下物理外部键盘 通过相机连接套件或蓝牙的 USB 上的特定按键 我会用它来用脚按下应用程序中的按钮 幅度 我想使用键盘作为脚踏开关 仅供私人使用 没有应用商店或
  • 包含 if 和 .each() 的 jQuery 函数在 IE7 中非常慢

    我基本上搜索具有特定数据属性的元素 因此我循环遍历具有可能具有这些数据属性的类的所有元素 我使用 jQueryeach 函数进行循环 并且已经阅读并体验到 与其他常见浏览器 如 Firefox Chrome 或 Safari 相比 它在 I
  • 如何在没有显示器的情况下使用gui启动linux? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我遇到了一个问题 我有一台安装了redhat enterprise 5 5的服务器 该服务器上正在运行一个 Qt 程序 所以我应该做的是打开我的服务器
  • Android Marshmallow:如何避免无互联网接入时 Wi-Fi 掉线

    我有一台运行 MarshMallow 6 0 的 Nexus 5x 它与无法访问互联网的设备的 Wi Fi 关联 Android 不断断开连接 甚至在尝试几次后也不会自动重新连接 因为它检测到没有互联网访问 即使没有互联网接入 如何强制 A
  • 如何将 JavaScript 变量传递给 React 组件

    我对 React 有点陌生 在将一些变量从 Django 服务器传递到 React 组件时遇到一些问题 这是我所拥有的 服务器是 Django 我有一个 url mydomain com testview 它映射到views py函数tes
  • 如何从 SQL Server 数据库中获取以给定字符串开头的条目?

    我有一个数据库 其中有很多要在标签系统中使用的单词 我已经为自动完成框创建了必要的代码 但我不确定如何以最有效的方式从数据库中获取匹配的条目 我知道 LIKE 命令 但在我看来 它更像是 EQUAL 命令 我只得到与我输入的单词完全相同的单
  • 如何强制 Vaadin 客户端引擎重试向服务器发送请求?

    我目前正在试验 Vaadin Java 框架 我注意到客户端引擎不会重试向服务器发送请求 当移动互联网网络较弱或不一致时 最好继续重试发送请求而不是放弃 有谁知道如何在 Vaadin 实现这一目标 扩展 ApplicationConnect
  • 无法转换参数 C#/SQL Server

    出现错误 无法将参数值从字符串转换为 Int32 我为我的表单编写了该代码 最后运行该代码时出现错误 我试图改变一切 但任何交换都会给我同样的错误 My code const string sqlText INSERT INTO dbo b
  • 在GWT项目中继承外部java源

    我有一个在服务器端使用的 ENUM 我也希望能够在客户端 GWT 上使用这个枚举 这是结构 se mycompany core se mycompany core TheEnum lt this Enum se mycomapny web
  • 安装 Ionic2 应用程序所需的类型

    所以我正在研究 Ionice2 项目 这仍然是新项目 差不多一周了 并且我正在尝试按照下面的教程使用 PouchDB 进行 LocalStorage 教程 http gonehybrid com how to use pouchdb sql
  • UITableView、UIWebViews 和scrollsToTop 属性 = 麻烦

    我的应用程序有一个UITableView UITableView 有一个标题视图 它是UIWebView 默认情况下 滚动视图有其scrollsToTop属性设置为YES 这将使用户能够点击状态栏滚动到滚动视图的顶部 当一个视图中嵌入两个滚
  • 使用类类型向量进行前向声明 - 不允许指向不完整类类型的指针

    我有两节课 foo and bar foo h includes bar h 并包含一个std vector的指针bar对象 在运行时的某个时刻 bar必须访问这个指向其他指针的向量bar对象 所以 foo包含一个名为getBarObjec