C++ 通用链表

2024-04-17

对于下面的代码:

#include <iostream>
#include <string>

using namespace std;

class Foo2;
class Foo3;

template <class T>
class Foo1 {
  public:
    Foo1();
    void print() {
      cout << "My name is: " << name << endl;
    }

    T getNext(){
      return nextLink;
    }

    string name;
    T nextLink;

};

class Foo2 : public Foo1 {
  public:
    Foo2(){
      name = "Foo2";
    }
};


class Foo3 : public Foo1 {
  public:
    Foo3(){
      name = "Foo3";
    }
};

template <class T>
class LinkedList {



public:
    T curr;
    T first;

void add(T node){
  if(first == NULL){
    first = node
  }
  node->nextLink = this;
  curr = node;
}
T getNext(){
  return next;
}
void printAll(){
  T curr = first;
  cout << "Contents are: " ;
  while(curr != NULL){
    cout << curr.print() << ", ";
    curr = curr.getNext();
  }
}

};

int main() {
  LinkedList<?> list;
  list.add(new Foo2());
  list.add(new Foo3());
  list.printAll();
  return 0;
}

我正在尝试实现一个通用链表,我意识到我可以导入<list>但这不适合我的项目。我正在尝试创建一个链接列表Foo2 and Foo3对象 - 以上是我能完成的最好的事情,因为我是 C++ 新手。

Error:

generic.C: In instantiation of Foo1<Foo2>:
generic.C:26:   instantiated from here
generic.C:22: error: Foo1<T>::nextLink has incomplete type
generic.C:6: error: forward declaration of âclass Foo2
generic.C: In instantiation of Foo1<Foo3>:
generic.C:34:   instantiated from here
generic.C:22: error: Foo1<T>::nextLink has incomplete type
generic.C:7: error: forward declaration of class Foo3
generic.C: In member function void LinkedList<T>::add(T):
generic.C:50: error: expected ; before } token
generic.C: In member function T LinkedList<T>::getNext():
generic.C:55: error: ânextâ was not declared in this scope
generic.C: In function âint main()â:
generic.C:69: error: template argument 1 is invalid
generic.C:69: error: invalid type in declaration before â;â token
generic.C:70: error: request for member âaddâ in âlistâ, which is of non-class type âintâ
generic.C:71: error: request for member âaddâ in âlistâ, which is of non-class type âintâ
generic.C:72: error: request for member âprintAllâ in âlistâ, which is of non-class type âintâ

你需要使用 T*,而不是 T。在我看来,你来自 Java,其中一切都是引用。没有?在 C++ 模板中。我认为你需要先拿起一本关于基础 C++ 的书,然后再回到模板。

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

C++ 通用链表 的相关文章

  • 从 Invoke 方法获取 RETURN

    我正在尝试从另一个线程上的列表框项目中读取值 我尝试创建一种新方法来运行调用命令 我可以设法将命令发送到列表框 例如通过调用方法添加 但我似乎无法得到响应 我似乎无法获取该项目的值 我尝试了几种方法 一旦我将它从空变为字符串 事情就开始变得
  • 从另一个 FORM 中取回隐藏的 FORM

    我有两种形式Form1 and Form2 我正在打开Form2 from Form1 on button Click Form2 obj2 new Form2 this Visible false obj2 Show 然后我想回来Form
  • 使用 Xamarin.Forms 和 Zxing 生成 QR 码

    我在网上看到了很多关于这个的内容 旧帖子 但似乎没有什么对我有用 我正在尝试从字符串中生成二维码并将其显示在应用程序中 这就是我一开始的情况 qrCode new ZXingBarcodeImageView BarcodeFormat Ba
  • OpenGL缓冲区更新[重复]

    这个问题在这里已经有答案了 目前我正在编写一个模拟水的程序 以下是我所做的步骤 创建水面 平面 创建VAO 创建顶点缓冲区对象 在其中存储法线和顶点 将指针绑定到此 VBO 创建索引缓冲区对象 然后我使用 glDrawElements 渲染
  • C# Outlook 从收件人获取 CompanyName 属性

    我目前正在使用 C 编写 Outlook 2010 AddIn 我想要的是从我从 AppointmentItem 中提取的 Recipient 对象中获取 CompanyName 属性 因此 有了 AppointmentItem 的收件人
  • 具有多个谓词的 C++11 算法

    功能如std find if来自algorithmheader 确实很有用 但对我来说 一个严重的限制是我只能为每次调用使用 1 个谓词count if 例如给定一个像这样的容器std vector我想同时应用相同的迭代find if 多个
  • 如何查明 .exe 是否正在 C++ 中运行?

    给定进程名称 例如 程序 exe C 标准库没有这样的支持 您需要一个操作系统 API 来执行此操作 如果这是 Windows 那么您将使用 CreateToolhelp32Snapshot 然后使用 Process32First 和 Pr
  • make_shared<>() 中的 WKWYL 优化是否会给某些多线程应用程序带来惩罚?

    前几天我偶然看到这个非常有趣的演示 http channel9 msdn com Events GoingNative GoingNative 2012 STL11 Magic Secrets作者 Stephan T Lavavej 其中提
  • 判断串口是普通COM还是SPP

    我正在寻找一种方法来确定 COM 是标准 COM 还是 SPP COM 也称为 COM 设备的电缆替换蓝牙适配器 我有一个可以在 USB COM gt USB 和蓝牙下工作的设备 并且蓝牙接口可以与 SPP 一起工作 我目前正在使用Syst
  • 如何增加ofstream的缓冲区大小

    我想增加 C 程序的缓冲区大小 以便它不会过于频繁地写入 默认缓冲区是 8192 字节 我尝试使用 pubsetbuf 将其增加到 200K 原始代码 ofstream fq fastq1 cstr ios out fastq1 is a
  • 编写具有多种类型的泛型扩展方法时的类型推断问题

    我正在为 IEnumerable 编写一个通用扩展方法 用于将对象列表映射到另一个映射对象列表 这就是我希望该方法的工作方式 IList
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • 如果在代码中添加元素,“FindName”将不起作用

    在 WPF 应用程序中 如果在 XAML 中声明 ContentControl
  • 如何在 EF Core 2.1 中定义外键关系

    我的 DAL 使用 EF Core 2 1 这就是我的模型的样子 一名用户只能拥有一种角色 Role entity kind of master public class Role public int RoleId get set pub
  • C 与 C++ 中的 JNI 调用不同?

    所以我有以下使用 Java 本机接口的 C 代码 但是我想将其转换为 C 但不知道如何转换 include
  • WinForms - 加载表单时如何使用 PaintEventArgs 运行函数?

    我试图理解图形 在 Graphics FromImage 文档中 它有这样的示例 private void FromImageImage PaintEventArgs e Create image Image imageFile Image
  • 使用 IdentityDbContext 和 Code First 自动迁移表位置和架构的实体框架?

    我正在尝试使用 IdentityDbContext 类设置自动迁移更新 并将更改传播到整个数据库的实际 DbContext 在进入代码之前 在使用自动迁移实现 IdentityDbContext 时 我收到此错误 影响迁移历史系统表位置的自
  • Emacs C++,打开相应的头文件

    我是 emacs 新手 我想知道 是否有在头文件 源文件和相应的源文件 头文件之间切换的快捷方式 是否有像通用 emacs 参考卡那样的参考卡 Thanks There s ff find other file 您可以使用以下方法将其绑定到
  • IDisposable 的显式实现

    虽然有很多关于IDisposable在 SO 上找到 我还没有找到答案 我通常遵循这样的做法 当我的一个班级拥有一个IDisposable对象然后它也实现IDisposable并打电话Dispose在拥有的对象上 然而最近我遇到了一个类 它
  • 是否可以使用 Dapper 流式传输大型 SQL Server 数据库结果集?

    我需要从数据库返回大约 500K 行 请不要问为什么 然后 我需要将这些结果保存为 XML 更紧急 并将该文件通过 ftp 传输到某个神奇的地方 我还需要转换结果集中的每一行 现在 这就是我正在做的事情 TOP 100结果 使用 Dappe

随机推荐

  • SFML 2.1 架构 x86_64 错误的未定义符号

    我最近安装了 SFML 2 1 并尝试从终端编译和运行 而不是 Xcode 他们在其网站上有示例程序http www sfml dev org tutorials 2 0 start linux php http www sfml dev
  • 使用 CSS 选择器制作棋盘图案

    我有一个 div 元素列表 当前使用 CSS 浮动在两列中显示 我想 替换 这些元素的边框颜色 我在引号中使用了交替 因为我真正想要的是每个 行 中的两个 div 交替 下面是我想要的最终状态的示例 1blue 2green 3green
  • 集群环境下的Spring Singleton

    正如中所讨论的this https stackoverflow com questions 1194129 singleton in cluster environmentpost 不适合使用单例聚集的环境 因为不同 JVM 中有多个单例对
  • 卡尔曼滤波器和内部状态变量的质量

    我正在尝试为 Android 开发运动检测应用程序 应用程序应该能够跟踪手机在空间中的运动并将其映射到计算机屏幕上的运动 我正在使用 3 轴加速度计 由于数据非常嘈杂 我正在使用卡尔曼滤波器 内部状态是 6 个分量向量 speed x sp
  • PHP 字符串分割

    我需要将一个字符串拆分为 2 2 3 3 个字符的块 并且可以通过使用 unpack 在 Perl 中执行此操作 unpack A2A2A3A3 thisisloremipsum 然而 相同的函数在 PHP 中不起作用 它给出以下输出 Ar
  • Google 地点详细信息 API 中的语言不一致

    我在我的服务器上使用 Google Place Details API 来存储有关某个地点的信息 使用placeId由客户发送 我面临着有关结果语言的问题 当该地点是城市或该城市中的地址时 结果的语言会有所不同 即使在查询中指定了语言也是如
  • Excel VBA onkey 宏可在另一个宏运行时工作

    我有一个宏 可以让您使用箭头键移动标记的单元格 这是将其向下移动的代码 Sub MoveMarkedDown Dim noDo As Boolean With myMarkedCell Select Case Row Case Is gt
  • VSCode 中是否有快捷方式可以在调试 REPL 中执行当前行或选择?

    我正在使用 Python 进行开发 并且通常在集成终端中运行代码Shift Enter 不过调试的时候过程似乎比较复杂 我需要复制代码 将焦点移至调试 REPL Ctrl Shift Y 粘贴 运行并将焦点移回编辑器 有没有更简单的方法来做
  • pip3 安装不起作用 - 没有名为“pip._vendor.pkg_resources”的模块

    当尝试安装 Python 3 的软件包 在 Ubuntu 中 时 使用pip3 install packageName or sudo pip3 install packageName 我收到以下错误消息 Traceback most re
  • 从数据库上传模型时丢失数据注释

    我有一个大数据库现有数据库可以与之通信 并且我首先使用 EF 5 0 数据库 我遇到的问题是 如果我创建任何数据装饰 例如 stringlength 50 在课堂上 然后上传数据库 当我 从数据库上传 时 所有数据注释都消失了 我该怎么做才
  • 如何禁用/更改 ion-nav-view 中视图之间的动画

    我开始了一个 Ionic 选项卡项目 这个项目带来了视图之间的默认动画 进入时从左到右 返回时从右到左 我想通过指定两种类型的视图动画来保留对此的控制 从下到上 没有动画 到目前为止 我尝试按如下方式禁用动画 正如建议的那样离子论坛主题 h
  • Rails:渴望加载 as_json 包括

    render json gt playlist gt playlist description songs gt playlist songs as json include gt playlist songs gt only gt id
  • 在 Qt 中检查 QObject 派生类类型的正确方法

    假设我有两门课 class A public QObject class B public QObject 那我去 QObject a new A QObject b new B 现在 我如何确保 a 是A类的实例 而 b 是B类的实例 目
  • numpy.unique 生成的列表在哪些方面是唯一的?

    如果您输入一个包含一般对象的数组numpy unique 结果将是唯一的 基于什么 我努力了 import numpy as np class A object probably exists a nice mixin for this P
  • SQL Server 优先级排序

    我有一个包含任务的表 我想根据任务的优先级对这些任务进行明确的排序 我能想到的唯一方法是通过uniqueint 列 根据优先级对任务所在位置进行索引 即 1 为前 1000 为低 问题是 假设我想更新任务并将其优先级设置为较低的值 我将必须
  • Eclipse 插件导出时出现错误:“无法解析导入 javafx.embed.swt”

    我正在尝试导出 Eclipse 插件 这只是我从此处的示例创建的一个 Eclipse 视图 http help eclipse org mars index jsp nav 2F2 0 http help eclipse org mars
  • 如何使实体框架异步执行

    我在 ASP Net MVC 5 应用程序中遇到异步控制器问题 我正在使用 Entity Framework 6 Code First 方法 我有一个方法 public async Task
  • 如何使用 NPOI 设置 Excel 中的行高?

    如何使用 NPOI 在 C 中设置行高 为了指定列的宽度 我使用 XSSFSheet SetColumnWidth 但是单元格高度的命令是什么样的 尝试下面的方法 var row sheet CreateRow 0 row Height 1
  • 有没有类似 sed 的 cmd.exe 实用程序? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想使用 Windows 命令行以编程方式编辑文件内容 cmd exe http en wikiped
  • C++ 通用链表

    对于下面的代码 include