为 std::string 实现派生复制和移动构造函数?

2024-04-13

我正在尝试使用 Embarcaderos clang 32 位编译器编译 VTK (7.0) 库。

但是,我最后收到一个链接错误,如下所示:

[ 56%] Linking CXX shared library ..\..\bin\vtkCommonDataModel-7.0.dll
Embarcadero C++ 7.30 for Win32 Copyright (c) 2012-2017 Embarcadero Technologies, Inc.
bcc32c.exe: warning: argument unused during compilation: '-auto-dependency-output'
bcc32c.exe: warning: argument unused during compilation: '-sys-header-deps'
bcc32c.exe: warning: argument unused during compilation: '-nobuiltininc'
bcc32c.exe: warning: argument unused during compilation: '-Xclang -cxx-abi'
bcc32c.exe: warning: argument unused during compilation: '-Xclang borland'
Turbo Incremental Link 6.90 Copyright (c) 1997-2017 Embarcadero Technologies, Inc.
Error: Unresolved external 'vtkStdString::operator =(vtkStdString&&)' referenced from P:\BUILDS\CLANG32C\VTKFORK-NINJA\COMMON\DATAMODEL\CMAKEFILES\VTKCOMMONDATAMODEL.DIR\VTKDISTRIBUTEDGRAPHHELPER.CXX.OBJ
Error: Unresolved external 'vtkStdString::vtkStdString(vtkStdString&&)' referenced from P:\BUILDS\CLANG32C\VTKFORK-NINJA\COMMON\DATAMODEL\CMAKEFILES\VTKCOMMONDATAMODEL.DIR\VTKDATASETATTRIBUTES.CXX.OBJ
Error: Unable to perform link

vtkStdString 类派生自 std::string 并且非常简单

class vtkStdString : public std::string
{
public:
  typedef std::string StdString;
  typedef StdString::value_type             value_type;
  typedef StdString::pointer                pointer;
  typedef StdString::reference              reference;
  typedef StdString::const_reference        const_reference;
  typedef StdString::size_type              size_type;
  typedef StdString::difference_type        difference_type;
  typedef StdString::iterator               iterator;
  typedef StdString::const_iterator         const_iterator;
  typedef StdString::reverse_iterator       reverse_iterator;
  typedef StdString::const_reverse_iterator const_reverse_iterator;

  vtkStdString(): StdString() {}
  vtkStdString(const value_type* s): StdString(s) {}
  vtkStdString(const value_type* s, size_type n): StdString(s, n) {}
  vtkStdString(const StdString& s, size_type pos=0, size_type n=npos):
    StdString(s, pos, n) {}
  operator const char *() { return this->c_str(); }
};

不完全熟悉 cxx11(?) 我确实相信上面提到的链接器错误消息中未解析的函数被称为移动构造函数和移动赋值运算符。

尝试使用以下代码天真地将它们添加到 vtkStdString 类中

...
vtkStdString& operator=(vtkStdString&& rhs)
{
    std::string::operator=(std::move(rhs));
    return *this;
}
vtkStdString(vtkStdString&& s)
{//only trying to compile.. not final code! }
...

给出以下编译错误(修剪以显示重要内容):

In file included from vtkAbstractArray.cxx:31:
vtkStringArray.h:154:23: error: object of type 'vtkStdString' cannot be assigned because its copy assignment operator is implicitly deleted
    { this->Array[id] = value; this->DataChanged(); }
                      ^
vtkStdString.h:56:19: note: copy assignment operator is implicitly deleted because 'vtkStdString' has a user-declared move constructor
    vtkStdString::vtkStdString(vtkStdString&& s)
                  ^
vtkAbstractArray.cxx:391:21: error: call to implicitly-deleted copy constructor of 'vtkStdString'
  return vtkVariant(arr[index]);

关于如何克服这一问题有什么想法吗?

由于 VTK 是一个相当大的库,因此无法更改 vtkStdString 类的设计。


None

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

为 std::string 实现派生复制和移动构造函数? 的相关文章

  • 读取进程的进程内存不会返回所有内容

    我正在尝试扫描第三方应用程序的内存 我已经查到地址了 现在是在0x0643FB78 问题是 从那以后我就再也爬不上去LPMODULEENTRY32 gt modBaseAddr is 0x00400000 and LPMODULEENTRY
  • Boost.Intrusive 和 unordered_map

    我希望使用侵入性的 unordered map 由于某种原因 库中只有一个 unordered set 还有一个侵入式哈希表 但我不确定它是否具有相同的功能 而且它没有相同的接口 我错了吗 我错过了 unordered map 链接吗 如果
  • 了解左值到右值转换的示例

    我很难理解这段代码 来自 C 14 草案标准的示例 转换拉瓦尔 调用未定义的行为g false 为什么constexpr使程序有效 另外 不访问 是什么意思 y n 在两次通话中g 我们正在返回n数据成员那么为什么最后一行说它不能访问它呢
  • 这些比较应该返回什么?

    我有一个使用 string compare string string 对某些值进行排序的应用程序 我不明白的是为什么 1022 比较小于 10 23 而 10 23 比较小于 1024 是否有特定于 值的东西导致了这个结果 string
  • 在主窗体上使用 BeginInvoke 调用的网络任务未执行

    我使用 Visual Studio 2013 构建了一个具有单个表单的 C 应用程序 并且该应用程序有两个更新屏幕的例程 更新屏幕的例程需要在主线程上运行 因此我自己的线程 不与屏幕交互 在需要更新时调用主窗体上的 BeginInvoke
  • 使用 SFML 绘制文本时出现段错误

    我做了一个Button应该绘制一些顶点和字符串的类RenderWindow 这是删除了不相关部分的代码 here http pastebin com 4a5RuS2y是完整的代码 namespace game class Button pu
  • 同步和异步 API

    我正在开发一个库 它提供一些耗时的服务 我需要每个 API 有两个版本 一个用于同步函数调用 另一个用于异步 图书馆用户应决定使用哪个版本 服务结果可能对于系统继续运行 同步调用 至关重要 可能需要在不同的工作线程中完成相同的操作 因为结果
  • 托管 C++ 和 AnyCPU

    我有一个托管 C dll 我从 C 项目中引用它 C 项目将被编译为 AnyCPU 有没有办法编译 32 位和 64 位版本的托管 C dll 然后告诉 C 项目在运行时根据正在运行的体系结构加载正确的版本 让 AnyCPU dll 与 C
  • C 预处理器“/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cpp”未通过完整性检查

    在使用 Xcode 11 3 的 macOS Mojave 上 我有一个基于 Autotool 的第三方库 在终端中运行我的构建脚本时构建得很好 但在 Xcode 中运行时失败Run Script步骤为 BuildScript Showin
  • 消息在事务处理时未到达 MSMQ

    我在本地计算机中创建了一个私有 MSMQ 我使用以下 C 代码将消息发送到队列 当我将队列更改为事务性队列时 消息未到达 MSMQ 但是 Send 方法中没有抛出异常 我需要做出什么改变才能使其发挥作用 using System using
  • 仅使用 url 嵌入视频

    给定一个 youtube url 我如何使用 net c 将视频嵌入到页面中 只需添加如下一行 将 autoplay 设置为 0 或 1 取决于您是否希望人们真正留在您的页面上
  • ASP.NET MVC C#:将多个表/查询中的数据引入视图中

    好吧 我仍在掌握 ASP NET 和 MVC 框架的窍门 并将我的知识从经典的 ASP 和 VB 转换过来 所以请保持温柔 我的第一个视图 home details X 运行良好感谢之前的帮助为我指明了正确的方向 https stackov
  • 学习 WPF 会提高我的 ASP.NET 技能吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我已经在 Windows 窗体领域工作了很多年 而且仍然如此 我完全不熟悉 ASP NET 技术 也不熟悉其他 Web 相关技术 我曾合作过 O
  • c++ string::size 中的 CharT 元素是什么?

    From http en cppreference com w cpp string basic string size http en cppreference com w cpp string basic string size 的数量
  • 以编程方式将 Word 文件另存为图片

    我想将Word文档的第一页另存为图片 使用 C 有什么方法可以做到这一点 您可以将 Word 文档打印到 XPS 文档 在 WPF Net 3 5 应用程序中打开它 并使用 WPF 框架的文档和图像功能将第一个内部固定页面对象转换为位图 如
  • STL迭代器是否保证集合更改后的有效性?

    假设我有某种集合 并且我在它的开头获得了一个迭代器 现在假设我修改了该集合 无论集合或迭代器的类型如何 我仍然可以安全地使用迭代器吗 为了避免混淆 以下是我讨论的操作顺序 获取集合的迭代器 修改集合 显然 不是其中的元素 而是集合本身 使用
  • 我试图使这段代码递归,但由于某种原因它不起作用[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我试图使这
  • 索引 getter 中的 IndexOutOfRangeException

    在我的索引属性中 我检查索引是否超出范围 如果是的话 我抛出一个IndexOutOfBoundsException 当我运行代码分析器 在 VS12 中 时 它抱怨 CA1065 意外位置出现意外异常 参考CA1065的描述 仅 Syste
  • 在 C 中打印字符串的所有排列

    我正在学习回溯和递归 并且我陷入了打印字符串所有排列的算法 我用以下方法解决了它贝尔算法 http programminggeeks com bell algorithm for permutation 用于排列 但我无法理解递归方法 我在
  • 通过网络共享的 SQL CE

    我之前见过这个问题 但找不到关于什么是可能 不可能以及什么解决方法可能可用的明确解释 我有一个现有的 C 应用程序 它使用 SQL CE 来存储本地信息 该数据库只能由单个应用程序访问 并存储在用户的 appdata 文件夹中 某些环境将

随机推荐

  • 在 PHP 中删除数组项的最佳方法是什么?

    您能告诉我从数组中删除项目的方法吗 你觉得这样好吗 那要看 a1 array a gt 1 b gt 2 c gt 3 unset a1 b array a gt 1 c gt 3 a2 array 1 2 3 unset a2 1 arr
  • 可以在 t4 模板中使用全局变量吗?

    如何在 TT 文件中使用全局变量 如果我在标头中声明一个变量 并且在函数中引用它 则会出现编译错误 lt template debug false hostspecific false language C gt lt output ext
  • 如何使用Delphi在活动显示器的右下角显示消息窗口

    这些天你看到很多软件显示活动屏幕右下角的消息窗口几秒钟或直到单击关闭按钮 例如诺顿在检查下载后执行此操作 我想使用以下方法来做到这一点Delphi 7 如果可能的话德尔福2010 因为我正在慢慢地将代码迁移到最新版本 我在这里找到了一些关于
  • 将日期转换为 GMT - php

    我遇到了一个奇怪的问题 也许你可以帮忙 我正在尝试将日期转换为 GMT 时间 这就是我正在做的事情 date 2010 05 27 23 02 01 gmt date gmdate Y m d H i s date 但产量 gmt date
  • 如何对 Newtonsoft JArray 进行排序?

    是否可以排序JArray下面由col2例如 col1 thiscol col2 thisval col1 thiscol2 col2 thisval2 col1 thiscol3 col2 thisval3 如果将其转换为Array是唯一的
  • 如何在“if x in range”语句中使用浮点数

    我正在尝试写一个if将浮点数作为范围的语句 x 8 2 if x in range 0 4 4 print one if x in range 4 5 8 print two if x in range 8 1 9 9 print thre
  • 更新对象值 Ramda

    在上一个问题中 我尝试按父 ID 对数组进行分组 然后从每个对象中删除它们 按父 ID 对象 Ramda 对数组进行分组 https stackoverflow com q 58682137 9464680 但现在我有一个新问题 例如 我想
  • Android 致命信号 11 (SIGSEGV) at 0x00000040 (code=1) 错误

    我正在开发一个 Android 应用程序 我正在其中获取用户照片图像 5张图像 使用opencv2 4 2具有面部检测功能的相机 并使用 Web 服务保存到服务器中的数据库中 为此 我使用 Opencv2 4 2 人脸检测示例 Ksoap2
  • 裁剪以适合 svg 图案

    我有一些图案 每个图案中都有一个图像 我需要将图像缩放到其容器 即路径 的完整宽度或高度 同时保留其比例 本质上 如果您设置它们 它们的行为就需要像 html 图像一样min width 100 min height 100 我以前没有太多
  • swfupload 不允许我从一台服务器上传到另一台服务器

    我们有两个网络服务器 并且我们在这两个服务器之间专门执行任务 我们决定将所有 asp aspx 页面放入一台服务器中 并将 upload aspx sql 服务器放入另一台服务器中 这是服务器的名称 http server1 somecom
  • 为什么活动需要代表?为什么我们需要事件?

    过去几周我对发生的事情感到困惑 我了解代表如何工作 但不了解其详细工作方式 但足以了解这一点delegate datatype是单个演员委托 delegate void是一个多播委托 对方法的引用列表 我知道委托类型编译为类 但不幸的是我仍
  • 如何制作 npm 安装包并忽略一个(或所有)对等依赖项?

    I have email protected cdn cgi l email protection安装 我要安装vuex module decorators latest 其对等依赖性为vuex 3 not gt 3 我有一种感觉 这会很好
  • 从其他文件调用 php 类

    我正在研究一些自定义帖子类型 我完成了第一个 并意识到我正在使用的元框代码可以被其他未来的自定义帖子类型 以及页面 帖子等 重复使用 因此 我将该类放入其自己的 php 文件中 并将其包含在我的子主题的functions php 文件中 我
  • Haskell:无法导入 System.Random

    我已经按照找到的说明在 MacOS Mojave 上安装了 Haskellhere https www haskell org platform 即使用stack命令 然而 import System Random 带入ghci错误信息找不
  • 如何在 Oracle/SQL 中检索给定序列中的行?

    我有一个带有主键 MY PK 的表 MY TABLE 然后 我有一个有序主键列表 例如 17 13 35 2 9 现在我想检索具有这些主键的所有行 并以与给定键列表相同的方式保持行的顺序 我最初做的是 SELECT FROM MY TABL
  • 如何知道是否发生欠拟合或过拟合?

    我正在尝试用两个类进行图像分类 我有 1000 张具有平衡类别的图像 当我训练模型时 我得到了较低的恒定验证准确性 但验证损失却在减少 这是过度拟合或欠拟合的迹象吗 我还应该注意到 我正在尝试使用新类和不同的数据集重新训练 Inceptio
  • 无需外部库即可在 C# 中播放动态创建的简单声音

    我需要能够使用 C 动态生成波形并播放它 无需任何外部库 也无需在硬盘上存储声音文件 延迟不是问题 声音将在应用程序需要之前生成 实际上 如果不是微软表示 64 位版本的 Windows 不支持 Console Beep 方法 它可能会满足
  • 调用 getNextException 查看原因:How to make Hibernate / JPA show the DB server message for an exception

    我正在使用 Postgresql Hibernate 和 JPA 每当数据库中出现异常时 我都会得到类似的信息 这不是很有帮助 因为它没有显示数据库服务器上真正出了什么问题 Caused by java sql BatchUpdateExc
  • Java Swing:如何停止不需要的 Shift-Tab 击键操作

    当我在 JPanel 中有一个 JTextField 并且它具有焦点时 按 tab 不会执行任何操作 但按 shift tab 会导致焦点丢失 FocusEvent getOppositeComponent 为 null 如果 JPanel
  • 为 std::string 实现派生复制和移动构造函数?

    我正在尝试使用 Embarcaderos clang 32 位编译器编译 VTK 7 0 库 但是 我最后收到一个链接错误 如下所示 56 Linking CXX shared library bin vtkCommonDataModel