前向声明不适用于转换运算符

2024-03-01

考虑下一个代码:

#include <iostream>
using namespace std;


class B;

class A
{
public:

    A() { p = 1;}
    int p;
    operator B() {B b; b.x = this->p; return b;}
};


class B
{
public:
    int x;
};

int main()
{

    A a;
    B b = a;
    return 0;
}

我正在尝试转换A to B,但我得到以下编译器尖叫声:

..\main.cpp:13: error: return type 'struct B' is incomplete

当我这样做时:

#include <iostream>
using namespace std;

class B
{
public:
    int x;
};

class A
{
public:

    A() { p = 1;}
    int p;
    operator B() {B b; b.x = this->p; return b;}
};


int main()
{
    A a;
    B b = a;
    return 0;
}

代码可以编译,但问题是:是否可以使用我上面写的前向声明来做到这一点?

非常感谢 罗南


是的,这是可能的,只要定义A::operator B遵循以下定义class B.

#include <iostream>
using namespace std;


class B;

class A
{
public:

    A() { p = 1;}
    int p;
    operator B();
};


class B
{
public:
    int x;
};

inline A::operator B() {B b; b.x = this->p; return b;}


int main()
{

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

前向声明不适用于转换运算符 的相关文章

  • WebClient.DownloadDataAsync 冻结了我的 UI

    我在 Form 构造函数中的 InitializeComponent 之后有以下代码 using WebClient client new WebClient client DownloadDataCompleted new Downloa
  • 如何使用 ASP.NET MVC 编辑多选列表?

    我想编辑一个如下所示的对象 我希望用 UsersGrossList 中的一个或多个用户填充 UsersSelectedList 使用 mvc 中的标准编辑视图 我只得到映射的字符串和布尔值 下面未显示 我在 google 上找到的许多示例都
  • 元组在 VS2012 中如何工作?

    Visual Studio 2012 功能 tuples但不是可变参数模板 这是如何完成的 如何在不使用可变模板的情况下实现元组 简而言之 微软做了与之前在 NET 中实现类似元组的数据类型完全相同的事情 创建许多版本 每个版本都有固定数量
  • 我如何知道 C 程序的可执行文件是在前台还是后台运行?

    在我的 C 程序中 我想知道我的可执行文件是否像这样在前台运行 a out 或者像这样 a out 如果你是前台工作 getpgrp tcgetpgrp STDOUT FILENO or STDIN FILENO or STDERR FIL
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • MFC CList 支持复制分配吗?

    我在 MSVC 中查找了 CList 定义afxtempl h http www cppdoc com example mfc classdoc MFC AFXTEMPL H html并记录在MSDN http msdn microsoft
  • 将设置函数(setter)标记为 constexpr 的目的是什么? [复制]

    这个问题在这里已经有答案了 我无法理解将 setter 函数标记为的目的constexpr 自 C 14 起这是允许的 我的误解来自以下情况 我使用 constexpr c tor 声明一个类 并且我将通过创建该类的 constexpr 实
  • C# 处理标准输入

    我目前正在尝试通过命令行断开与网络文件夹的连接 并使用以下代码 System Diagnostics Process process2 new System Diagnostics Process System Diagnostics Pr
  • 全局使用和 .NET Standard 2.0

    我最近意识到我可以使用 C 10 功能文件范围的命名空间在 NET Standard 2 0 项目中也可以通过设置
  • while循环中的变量初始化

    我有一个可以分块读取文件的函数 public static DataObject ReadNextFile 数据对象看起来像这样 public DataObject public string Category get set And ot
  • 为什么需要数字后缀?

    C 语言 我确信还有其他语言 需要在数字文字末尾添加后缀 这些后缀指示文字的类型 例如 5m是一个小数 5f是一个浮点数 我的问题是 这些后缀真的有必要吗 或者是否可以从上下文中推断出文字的类型 例如 代码decimal d 5 0应该推断
  • 将日期时间转换为指定格式

    我有这个日期格式yy MM dd HH mm ss ex 12 02 21 10 56 09 问题是 当我尝试使用以下代码将其转换为不同格式时 CDate 12 02 21 10 56 09 ToString MMM dd yyyy HH
  • 如何使用 Roslyn 通过扩展方法、静态类中的方法以及带有 ref/out 参数的方法来访问调用

    我正在致力于创建一个开源项目 用于创建 NET UML 序列图 该项目利用名为 js sequence diagrams 的 javascript 库 我不确定 Roslyn 是适合这项工作的工具 但我想我应该尝试一下 所以我整理了一些概念
  • 如何在win32中使用GetSaveFileName保存文件?

    我编写此代码是为了获取 fileName 来保存我的文件 include stdafx h include
  • 如何使用递归查找数字中的最小元素 [C]

    好的 所以我正在准备我的 C 考试 当谈到递归时我有点卡住了我是大学一年级的学生 这对我来说似乎有点困难 练习要求在给定的数字中使用递归函数我需要找到最小的元素 例如 52873 是 2 程序需要打印 2 include
  • C++ 到 C# 事件处理

    所以我有我的C WinForm 应用程序 我从中调用我的C CLI MFC dll图书馆 但也有一些events在我的 C 库上 甚至此事件也发生在该库的本机 非 CLI 部分 我需要从我的 C 应用程序调用一些代码 并获取一些有关此事件的
  • 使用 xslt 将 xml 转换为 xsl-fo 时动态创建超链接?

    我想使用 xsl 文件在 PDF 报告中创建标题 如果源文件包含超链接 则应将其呈现为超链接 否则呈现为纯文本 例如 我的 xml 如下所示 a href http google com target blank This is the h
  • 浮点字节序?

    我正在为实时海上模拟器编写客户端和服务器 并且由于我必须通过套接字发送大量数据 因此我使用二进制数据来最大化可以发送的数据量 我已经了解整数字节顺序以及如何使用htonl and ntohl为了规避字节顺序问题 但我的应用程序与几乎所有模拟
  • 如果“嵌入式”SQL 2008 数据库文件不存在,如何创建它?

    我使用 C ADO Net 和在 Server Management Studio 中创建的嵌入式 MS SQL 2008 数据库文件 附加到 MS SQL 2008 Express 创建了一个数据库应用程序 有人可以向我指出一个资源 该资
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost

随机推荐

  • 使用 Wordpress 自动完成 jQuery

    我想在 Wordpress 中使用 Jquery 自动完成和 ajax 调用从 json 文件中检索数据 这是我的代码 HTLM div class form group formComuni div
  • 如何找出 UITextField 导致 UIKeyboardWillShowNotification 的原因?

    我试图在我的应用程序中使用自定义键盘 但在尝试将其限制为一个特定的 UITextField 时遇到问题 我的代码基于这个 Xcode 项目 http billabonger net blog wp content uploads 2009
  • 如何正确使用Scala Play Anorm和Option[String]插入NULL SQL

    当 Option String 为 None 时插入它的正确方法是什么 下面的代码插入一个空字符串 这与mysql中的NULL不同 是根据partnerCode的内容预先构建SQL字符串的唯一方法吗 叹息 异常 DB withConnect
  • 如何同时使用 AVAssetReader 和 AVAssetWriter 处理多个轨道(音频和视频)?

    我知道如何使用AVAssetReader and AVAssetWriter 并成功地使用它们从一部电影中抓取视频轨道并将其转码为另一部电影 不过 我也想用音频来做到这一点 我必须创建并AVAssetExportSession在我完成初始转
  • 在android中,当方向改变时,背景图像不会改变

    我的 ActivityGroup 有一个定义的线性布局
  • Paypal 订阅 IPN - 用户多次订阅的问题

    我正在使用 PayPal 订阅和即时付款通知 IPN 来处理我网站上的订阅者 在大多数情况下 它运行良好 但我偶尔遇到一个问题 通常 如果用户取消订阅 我会等待 期限结束 subscr eot 通知 然后再禁用对我的网站的访问 因此 如果他
  • powershell 和 diskpart

    简而言之 我有一个卷需要为其分配驱动器号 使用 diskpart 现在的问题是音量不再保持不变 您输入磁盘部分 a 执行 列出卷 特定卷将是卷 0 然后 退出 再次输入并再次执行 列出卷 这次是卷 4 如此继续 现在 如果这是由人完成的 则
  • Python 无法从包中导入模块

    我有一个具有以下布局的 Flask Restful 项目 为方便起见更改了文件名 myproject init py app py common init py util py foo init py main py utilities p
  • 使用 HtmlAgilityPack 对特定子节点进行计数

    我在 HtmlAgilityPack 中使用的 XPath 选择遇到了很多麻烦 我想选择全部li嵌套在另一个元素中的元素 如果存在 li女巫有a标记为id menuItem2 这是 html 示例 div ul li a a li li a
  • 矩阵和算法“螺旋”

    我想问是否有一些算法准备好 允许我这样做 我有一个矩阵 m 列 x n 行 其中有 m x n 元素 我想给这个元素从中心开始并以螺旋形式旋转的位置 例如 对于 3x3 的矩阵 我有 9 个这样定义的元素 5 6 7 4 9 8 3 2 1
  • 如何从 CodeIgniter 内部访问标准 PHP 会话数据

    我正在开发一个 Codeigniter 项目 并使用 CI 会话 存储在数据库中 但我需要检查另一个应用程序 在同一个 cookie 域中 的另一个 SESSION 中的变量 但是当我尝试从 CI 控制器使用本机 PHP 会话来获取这一点信
  • Base X 字符串编码

    我正在寻找一个例程 将字符串 字节流 编码为任意基本 字母表 如base64编码 但我可以选择字母表 我见过一些例程对数字进行基本 X 编码 但不对字符串进行基本 X 编码 这是我的BaseX BaseN 编码算法的实现 https git
  • 使用模型工厂、一对一和一对多关系定义 Laravel 外键,无需创建不必要的模型

    最近 我一直在尝试通过 Model Factories 和 Faker 使用 Laravel 播种来为我的数据库播种 对于简单的模式 让它工作是轻而易举的 然而 我在处理复杂的数据库模式时遇到了几个问题 其中涉及外键和表关系 一对一 一对多
  • 安装 reflex-dom 可能会破坏 ghcjs

    我正在尝试安装reflex and reflex dom using cabal install我收到以下错误消息 cabal install reflex dom cabal The following packages are like
  • 确定查询是否在 vb.net 中返回“无行”

    我使用 MS SQL Server 作为数据库 使用 VB NET 作为后端 我想确定 sql 命令文本中的查询是否不返回任何行 我尝试有一个不返回任何行的查询 然后将其值赋给一个文本框 该文本框变为 0 整数 现在的问题是 当我在一个如果
  • 节能器启用和禁用后后台服务停止

    我有一个应用程序 在其中我在后台执行一些任务 因此 如果我的后台服务正在运行 该任务就会执行 问题 当我启用和禁用省电程序时 它会关闭所有内容并停止正在运行的每个后台服务 关闭省电程序后 直到我打开应用程序后 服务才开始启动 那么 对于低于
  • 何时使用 Apache 与 Apache+Tomcat?

    既然简单地使用 Apache 就足以运行许多 Web 应用程序 那么除了 Apache 之外 人们何时以及为何还使用 Tomcat 阿帕奇雄猫 http tomcat apache org是 Web 服务器和 Java servlet 容器
  • 如何改进这个平方根方法?

    我知道这听起来像是一项家庭作业 但事实并非如此 最近我对用于执行某些数学运算的算法感兴趣 例如正弦 平方根等 目前 我正在尝试编写巴比伦方法 http en wikipedia org wiki Babylonian method Baby
  • 如何从python中的pandas数据框中的列中提取关键字(字符串)

    我有一个数据框df它看起来像这样 id Type agent id created at 0 44525 Stunning 6 bedroom villa in New Delhi 184 2018 03 09 1 44859 Villa
  • 前向声明不适用于转换运算符

    考虑下一个代码 include