Linux C++: error: redefinition of ‘class xxx’ 的解决方法

2023-11-19

我在Ubuntu上写C++,运行程序时遇到error:

ThinkBook-15p:/data150/study/projects/0408$ g++ -g ./src/*.cpp -I ./include -o ./bin/test01
In file included from ./include/Camel.hpp:2:0,
                 from ./include/Alpaca.hpp:2,
                 from ./src/test01.cpp:2:
./include/Animal.hpp:9:7: error: redefinition of ‘class Animal’
 class Animal{
       ^~~~~~
In file included from ./include/Sheep.hpp:3:0,
                 from ./include/Alpaca.hpp:1,
                 from ./src/test01.cpp:2:
./include/Animal.hpp:9:7: note: previous definition of ‘class Animal’
 class Animal{
       ^~~~~~


产生原因: #include 导入了重复到类。这种问题很难避免,#include 的.h文件中,经常分别#include到相同到.h, 比如:这个例子中, Animal.h就被重复导入了。

解决方法 1:

在Animal.h 开头加上:

#pragma once

表示无论Animal.h被导入几次,都只当作1次。

解决方法2:

将Animal.h 文件中到class Animal放到下面代码中

#ifndef Animal_H

#define Animal_H

******

#endif

比如:

#include <iostream>

using namespace std;

 #ifndef Animal_H
 #define Animal_H

class Animal{
    public:

        int m_Age;
};

#endif

完美解决:

ThinkBook-15p:/data150/study/projects/0408$ g++ -g ./src/*.cpp -I ./include -o ./bin/test01
ThinkBook-15p:/data150/study/projects/0408$ ./bin/test01 
20
20

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

Linux C++: error: redefinition of ‘class xxx’ 的解决方法 的相关文章

  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • nslookup 报告“无法解析 '(null)': 名称无法解析”,尽管它成功解析了 DNS 名称

    我在 ubuntu 上 并且正在运行 docker 默认桥接网络 我有 Zookeeper kafka 的容器化版本 以及我编写的与 kafka 对话的应用程序 I do a docker exec it
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • 如果使用 SingleOrDefault() 并在数字列表中搜索不在列表中的数字,如何返回 null?

    使用查询正数列表时SingleOrDefault 当在列表中找不到数字时 如何返回 null 或像 1 这样的自定义值 而不是类型的默认值 在本例中为 0 你可以使用 var first theIntegers Cast
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 将 xml 反序列化为类,list<> 出现问题

    我有以下 XML
  • 需要哪个版本的 Visual C++ 运行时库?

    microsoft 的最新 vcredist 2010 版 是否包含以前的版本 2008 SP1 和 2005 SP1 还是我需要安装全部 3 个版本 谢谢 你需要所有这些
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐

  • Android编译之常用配置及mk模板使用(汇总一)

    Android编译之常用配置及mk模板使用 引言 编译选项 1 eng 2 user 3 userdebug 模块编译常量宏 常用模块编译模板 1 编译一个APK 2 编译一个Java 共享库和静态库 3 编译一个Native 共享库和静态
  • 利用python做数据分析

    数据分析是指对数据进行控制 处理 整理 分析的过程 在这里 数据 是指结构化的数据 例如 记录 多维数组 Excel 里的数据 关系型数据库中的数据 数据表等 1 为什么要用python做数据分析 很多人都有兴趣选择python作为数据分析
  • 阿里P7大牛亲自教你!妈妈再也不用担心我的面试,讲的明明白白!

    第一次观看我文章的朋友 可以关注 点赞 转发一下 每天分享各种干货技术和程序猿趣事 前言 随着移动终端的快速发展 Android开发人员也越来越多 Android开发市场也进入了一个饱和的状态 Android开发人员也面临着难找一份好工作的
  • 虚拟机 服务器死机,VMware虚拟机开机卡死黑屏,进不了系统解决办法

    Vmware虚拟机Linux Ubuntu CentOS windowns开机启动卡死黑屏 想重置虚拟机又没有拍摄快照 重新装一次虚拟机 别着急 这里有个方法可以试一试 VMware 15 5 0 build 14665864 物理机操作系
  • python怎么算数据平均数,python怎样求10个数的平均数

    python怎样求10个数的平均数 发布时间 2021 03 12 09 18 47 来源 亿速云 阅读 100 作者 小新 这篇文章主要介绍了python怎样求10个数的平均数 具有一定借鉴价值 感兴趣的朋友可以参考下 希望大家阅读完这篇
  • Java JDBC快速上手

    一 JDBC介绍 JDBC Java DataBase Connectivity Java的数据库连接 JDBC 本质上是由sun公司开发的一套操作数据库的接口 规范 各个数据库厂商要想使用Java连接自己的数据库 都必须按照JDBC接口的
  • r如何让新增加的列出现在第一列 r如何调整新增加的列的位置

    https www cnblogs com liujiaxin2018 p 16211983 html 1 任意位置插入列 复制代码 gt a lt letters 1 5 gt b lt LETTERS 1 5 gt c lt sampl
  • 单元测试方法

    目录 一 单元测试概述 目录 一 单元测试概述 1 单元测试是什么呢 2 我们目前测试方法是怎么进行的 存在什么问题 3 Junit单元测试框架 4 JUnit优点 二 单元测试实现步骤 1 需求 使用单元测试进行业务方法预期结果 正确性测
  • AltiumDesigner下载安装

    原文来自公众号 工程师看海 AltiumDesigner的特点是交互人性化 上手简单 显示画面美观 是很多硬件工程师入门之选 在我的公众号 后台回复 altium designer 可以得到altium designer的安装包和和谐方法
  • 【ES】QueryBuilder构造ES查询条件:精准匹配、模糊搜索、范围查询、and、or

    private QueryBuilder getQueryBuilder termsQuery key obj1 obj2 一次匹配多个值 matchQuery key Obj 单个匹配 field不支持通配符 前缀具高级特性 multiM
  • Mysql分库分表方案

    Mysql分库分表方案 Mysql分库分表方案 1 为什么要分表 当一张表的数据达到几千万时 你查询一次所花的时间会变多 如果有联合查询的话 我想有可能会死在那儿了 分表的目的就在于此 减小数据库的负担 缩短查询时间 mysql中有一种机制
  • Hadoop知识点整理

    知识点大纲 一 初识Hadoop 1 mapreducer 和rdbms区别 2 结构化数据 非结构化数据 半结构化数据 3 hadoop发展历程 二 关于MapReducer 1 新老API对比 2 MapReducer 执行步骤 3 c
  • filebeat多个日志输出多条索引

    vim filebeat yml filebeat prospectors type log enabled true paths opt zcsy hbase logs hbase hadoop regionserver cd zcsy
  • Windows 10 安装Qt5.15.2以及vs2019

    Windows 10 安装Qt5 15 2以及vs2019 一 安装Qt5 15 2 下载Qt5 15 2 下载地址 阿里云盘 安装 Qt5 15 2 输入账号进行在线安装 点击NEXT进入下一步 注 账号密码需要去QT官网申请帐号 账号申
  • WebSocket + kafka实时推送数据(springboot纯后台)

    逻辑 kafka订阅消费者主题 消费后通过webSocket推送到前端 kafka vue financial webSocket 学习引用 SpringBoot2 0集成WebSocket 实现后台向前端推送信息 World Of Mos
  • Java_web初级学习01搭建环境

    一 安装jdk以及JAVA HOME JRE HOME配置 1 安装jdk 这里可以修改路径 2 设置JAVA HOME和JRE HOME环境变量 计算机 图标上右键 gt 属性 gt 高级系统设置 配置JAVA HOME环境变量 到jdk
  • nginx负载均衡之健康检查

    严格来说 nginx到目前为止没有针对负载均衡后端节点的健康检测的模块 但是可以通过upstream负载均衡组中的max fails number和fail timeout time来间接实现 但还是会把请求转发给故障服务器的 然后再转发给
  • 求最大子序列和及其位置(四种经典方法)

    算法部分 include
  • R

    ggplot plot 画图时 都会有自带的颜色配置 但是比较难看 个人偏向自定义颜色 当然也有很多现成好用的配色方案 如RColorBrewer包 RColorBrewer包 提供了3套很好的配色方案 连续型sequential 生成一系
  • Linux C++: error: redefinition of ‘class xxx’ 的解决方法

    我在Ubuntu上写C 运行程序时遇到error ThinkBook 15p data150 study projects 0408 g g src cpp I include o bin test01 In file included f