为什么在此模板中需要使用 typedef?

2023-11-30

当我在 Visual Studio 2005 中编译此代码时:

  template <class T>
  class CFooVector : public std::vector<CFoo<T>>
  {
  public:
    void SetToFirst( typename std::vector<CFoo<T>>::iterator & iter );
  };

  template <class T>
  void CFooVector<T>::SetToFirst( typename std::vector<CFoo<T>>::iterator & iter )
  {
    iter = begin();
  }

我收到这些错误:

c:\home\code\scantest\stltest1\stltest1.cpp(33) : error C2244:     'CFooVector<T>::SetToFirst' : unable to match function definition to an existing declaration
    c:\home\code\scantest\stltest1\stltest1.cpp(26) : see declaration of 'CFooVector<T>::SetToFirst'
    definition
    'void CFooVector<T>::SetToFirst(std::vector<CFoo<T>>::iterator &)'
    existing declarations
    'void CFooVector<T>::SetToFirst(std::_Vector_iterator<_Ty,_Alloc::rebind<_Ty>::other> &)'

如果我向 CFooVector 模板添加 typedef,我就可以编译和运行代码:

  template <class T>
  class CFooVector : public std::vector<CFoo<T>>
  {
  public:
    typedef typename std::vector<CFoo<T>>::iterator FooVIter;
    void SetToFirst( FooVIter & iter );
  };

  template <class T>
  void CFooVector<T>::SetToFirst( FooVIter & iter )
  {
    iter = begin();
  }

我的问题是,为什么 typedef 在使用裸机时起作用'typename std::vector>::iterator'声明没起作用?


这也能编译并揭示 VC++ 混乱的根源——分配器类型。显然,VS 类之外选择了不同的默认值。或者它可能无法识别它们是相同的。

在 VS2008(按原样)和 VS2003(>> 之间有空格)上编译

template <class T>
class CFoo
{
public:
    T m_t;
};

template <class T>
class CFooVector : public std::vector<CFoo<T>>
{
public:
    void SetToFirst(typename std::vector<CFoo<T>, typename CFooVector::_Alloc>::iterator & iter);

};

template <class T>
void CFooVector<T>::SetToFirst( typename std::vector<CFoo<T>, typename CFooVector::_Alloc>::iterator & iter )
{
    iter = begin();
}

GCC 3.4 想要 this->begin() 和 space,但否则它可以在没有显式分配器类型的情况下编译代码...绝对看起来 MS 编译器没有应有的那么智能...

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

为什么在此模板中需要使用 typedef? 的相关文章

  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • wpf 中最简单的按钮位置动画是什么?

    我想在单击按钮时在画布上移动按钮 使其逐渐改变其位置 动画 而不是消失并重新出现在新位置 您可以使用Storyboard这将顺利地移动它
  • 如何对齐两张侧面图像和一张更大的图像并保持宽高比

    我试图将右侧的两个图像与左侧的主图像对齐 并将侧面图像在顶部和底部对齐 就像这张图片中一样 下面的代码是我正在尝试的简化版本 我遇到的困难是 我无法准确地将包装纸的顶部边缘和底部边缘对齐 而不会溢出图像并保持对齐当我调整窗口大小时保持纵横比
  • 上一个/下一个按钮?

    我想为我拥有的论坛输入上一个和下一个按钮 因为论坛变得很长之后 它超出了背景图像并且看起来不太好 有谁知道一种简单的方法或我可以查看上一个和下一个按钮的东西 我想要它 所以每个页面仅限 5 个帖子或其他内容 如果有帮助的话 这是代码 如果这
  • 从列表视图中选择索引

    我在获取列表视图中所选行的索引时遇到一些问题 我想知道为什么这段代码不起作用 我在 SelectedIndex 下方看到一条红线 private void lvRegAnimals SelectedIndexChanged object s
  • icloud不更新下载过程

    通常 我的代码可以从 iCloud 下载文件 但有时下载过程不会更新 以下是一些代码片段 开始下载 NSFileManager fm NSFileManager defaultManager if fm startDownloadingUb
  • 在 POM 文件中使用 Groovy 进行分隔符切换对于不同的开发人员来说效果不同

    我们在 POM 文件中使用一小段 Groovy 代码 将主基目录中的反斜杠分隔符替换为正斜杠分隔符 有关这方面的更多信息 请参阅这篇文章 如何在maven中转换文件分隔符 然而 我们遇到的问题是 该链接中建议的 groovy 在一台开发人员
  • 如何限制服务器端的调用?

    我知道客户端 underscore js 可用于限制点击率 但如何限制服务器端的调用 我想过使用相同的模式 但不幸的是 throttle 似乎不允许区分 Meteor userId 之间的区别 Meteor methods doSometh
  • Oracle - 更新记录并在同一查询中返回更新日期

    我正在使用 Java 8 和 SpringJdbcTemplate和甲骨文 12 1 我想更新记录并获取记录更新的确切时间 jdbcTemplate update UPDATE SQL null 目前它返回 int 受影响的行数 但我想要确
  • 更改 Bookdown PDF 中的*第 X 章*名称

    代替第十章当从 bookdown 创建 PDF 时 我希望它是 M dulo X 西班牙语 所以我想知道如何使用 bookdown 更改章节名称 我的 YAML 是 title TITLE author Mario Modesto Mata
  • 使用 mySql 获取剩余天数、小时和分钟

    我陷入了获取 mySql 中两个日期之间的剩余天数 小时和分钟的困境 我有一个到期日期 我想将其与当前日期时间进行比较 并想要获取天 小时和分钟 这个 stackoverflow 链接可能会帮助你 有很多方法可以计算两个日期之间的差异 并且
  • wsDualHttpBinding ClientBaseAddress 和防火墙

    我计划将 wsDualHttpBinding 用于带有回调的 WCF 服务 客户端将是一个 Windows 窗体应用程序 通过 Internet 与服务进行通信 显然我无法控制客户端的防火墙 所以我想知道在客户端设置 ClientBaseA
  • 如何使部分不可编辑的表格单元格与内联 JavaScript 函数兼容?

    那么 几天前 我发布了这个问题 几乎相同 并收到了非常有帮助的答复 然而 为了制作一个表格计算器 我已经有了一个id设置为某一列的每个表格行 将表格变成计算器 当我尝试自己应用它时 这会弄乱原始问题的答案 JavaScript 将单位 kg
  • 如何确保 WorkManager 取消我的 Worker?

    WorkManager 文档中提到取消 Worker 是最大努力 WorkManager 尽最大努力取消任务 但这是 本质上是不确定的 任务可能已经在运行或完成 您尝试取消它 如果我有一个用例怎么办强制的那Worker调用取消方法之一后被取
  • 使用 TypeScript 在 Angular 1.x 中实现类级可注入依赖项?

    抱歉 标题有些复杂 我已经使用 Angular 1 x 几年了 最近一直在研究在我正在重构的代码库 也在 Angular 1 x 中 中使用 TypeScript 的潜力 目前 我在思考如何创建类 和类族 的可注入依赖项 而不是构造函数的依
  • PHP - 如何从 txt 文件中回显随机行?

    我想通过 PHP 从文件中回显随机行sitemap txt提供为 link1 link2 link3 link4 link10000 我尝试过使用这个功能 lines file sitemap txt data link lines arr
  • hadoop-streaming 示例运行失败 - 映射中的键类型不匹配

    I was running HADOOP HOME bin hadoop jar HADOOP HOME hadoop streaming jar D stream map output field separator D stream n
  • 我如何在 vercel 上使用 formidable 和 nextjs 上传文件

    api upload js import formidable from formidable export const config api bodyParser false export default async req res gt
  • android:如何在非活动课上使用文本到语音

    我想在我的应用程序中使用文本到语音 我找到了很多使用文本到语音的示例 如下所示Android 文本转语音应用程序 我想使用非活动类中的文本到语音 例如 我有一个生成布局并将此布局返回到我的主要活动的类 我在此布局上有按钮 并且我想在单击此按
  • 如何动态地将文件添加到存储在 Azure Blob 存储中的 zip 存档中?

    我在 Azure 中有一个进程 可以生成大量 pdf 报告文件并将它们存储在 blob 存储中 我不是单独发送所有这些内容的链接 而是生成一个 zip 文件并将此链接发送给用户 这个过程全部在一个进程中完成 并且一直运行良好 最近 我在将文
  • 为什么在此模板中需要使用 typedef?

    当我在 Visual Studio 2005 中编译此代码时 template