Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >是否可以在C++ (Visual )中取消定义类?

是否可以在C++ (Visual )中取消定义类?
EN

Stack Overflow用户
提问于 2014-04-05 12:59:57
回答 2查看 1.5K关注 0票数 0

我知道,这似乎很奇怪,但我的目标是在C++中取消类的定义。问题的根源在于将TinyXML2和Boost单元测试结合起来。

正在测试的头文件(Configury.h)的内容:

代码语言:javascript
运行
AI代码解释
复制
...
#include <tinyxml2.h>
...

这是我的配置Tests.h文件的内容:

代码语言:javascript
运行
AI代码解释
复制
#include "unitTests.h"
#include "Configuration.h"

BOOST_AUTO_TEST_SUITE(configuration_test)

BOOST_AUTO_TEST_CASE(basic) {
    ...
}

BOOST_AUTO_TEST_SUITE_END( )

当我试图编译我的测试时,我得到了一个错误:

错误C2371:'XMLDocument‘:重新定义;不同的基本类型c:\程序文件(x86)\windows工具包\8.0\包含\um\msxml.h 10085

在第10085行的这个文件(msxml.h)中,我们有以下类定义:

代码语言:javascript
运行
AI代码解释
复制
class DECLSPEC_UUID("CFC399AF-D876-11d0-9C10-00C04FC99C8E")
XMLDocument;

当我删除这两行时,我的测试就会编译,而且一切看起来都很好。当然,这不是一个解决方案,但这一事实预示着Boost单元测试库中的某些内容包含msxml.h,并以某种方式导致与TinyXML2库的冲突。

我尝试过在谷歌中找到不同的解决方案(比如编写"#define WIN32_LEAN_AND_MEAN")、删除“使用命名空间tinyxml2”以及在tinyxml2.cpp中进行更改--实际上没有任何帮助。

所以,我的问题很简单:我可以取消定义(卸载吗?)以前用某种棘手的方式在编译时定义了类?我尝试了"#undef XMLDocument“、"#define 1”+ "#undef XMLDocument“--没有任何效果。

MSXML_LIBRARY_DEFINED“更新:实际上,我通过在配置测试的第一行编写”#DefineTests.h“来解决这个问题。不过,我还是很想知道这个问题的答案。

EN

回答 2

Stack Overflow用户

发布于 2016-02-21 05:25:46

我认为您已经为tinyxml2使用了默认名称空间。尝试删除using namespace tinyxml2,然后在下面的示例中使用它:tinyxml2::XMLDocument xDoc;

票数 1
EN

Stack Overflow用户

发布于 2014-04-05 13:16:04

试试这个:

代码语言:javascript
运行
AI代码解释
复制
namespace your_name_space 
{
    #include <tinyxml2.h>
}

从现在起,tinyxml2中的所有类都被您的命名空间所隐藏。

还必须为tinyxml2.cpp文件声明名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22886749

复制
相关文章
在PHP中检测一个类是否可以被foreach遍历
在PHP中,我们可以非常简单的判断一个变量是什么类型,也可以非常方便的确定一个数组的长度从而决定这个数组是否可以遍历。那么类呢?我们要如何知道这个类是否可以通过 foreach 来进行遍历呢?其实,PHP已经为我们提供了一个现成的接口。
硬核项目经理
2020/06/04
2.1K0
C++ OpenCV在Visual Studio中的配置
  本文介绍在Visual Studio 2022中配置、编译C++计算机视觉库OpenCV的方法(再介绍一次,上次忘记设置原创了)。
疯狂学习GIS
2023/06/26
1.3K0
C++ OpenCV在Visual Studio中的配置
C++矩阵库Armadillo在Visual Studio中的配置
  本文介绍在Visual Studio软件中配置C++ 环境下线性代数运算库Armadillo的方法。
疯狂学习GIS
2022/12/18
3.7K0
C++矩阵库Armadillo在Visual Studio中的配置
printer和typewriter_java类中可以定义类吗
打印流 字符打印流(针对文本进行操作:PrintWriter) 字节打印流(PrintStream 和标准输出流有关系 System.out;)
全栈程序员站长
2022/09/22
5790
date类和calendar类的区别_java类中可以定义类吗
在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。这里简单介绍一下Date类的使用。
全栈程序员站长
2022/09/30
1.3K0
c++类定义和类实现
c++中我们cpp文件和.h文件的区别是,cpp文件是需要编译的文件,成为一个独立的编译单元,而h文件从来是不需要编译,只是用于预处理。
chenjx85
2019/05/25
3.1K0
NodeJs —— 在Visual Studio中开发C++插件之环境配置
     最新版地址:  https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/
ranky
2018/08/20
2.8K0
NodeJs —— 在Visual Studio中开发C++插件之环境配置
Visual C++ 中的重大更改
https://technet.microsoft.com/zh-cn/learning/bb531344.aspx
用户7886150
2021/02/13
4.9K0
在 Visual Studio Code 中添加自定义的代码片段
你可以在 Visual Studio Code 的菜单中找到代码片段的设置入口,在 File -> Preferences -> User Snippets 中。
walterlv
2023/10/22
1.3K1
在 Visual Studio Code 中添加自定义的代码片段
在Word中插入一个可以勾选和取消的方框
文章背景: 在工作中,有时需要在表格内插入几个复选框,让用户去勾选,如下图所示。这种通过点击方框,自动打上对勾的效果如何实现呢?下面介绍一种方法。
Exploring
2023/08/17
3.3K0
在Word中插入一个可以勾选和取消的方框
Visual C++ 中的重大更改
https://technet.microsoft.com/zh-cn/learning/bb531344.aspx
用户7886150
2021/02/11
5.4K0
go 中 struct 是否可以比较?
今天来水一篇,最近比较忙,一直没有时间写 go 相关的,今天从一个小问题入手,来说说 struct 的比较问题。
LinkinStar
2022/09/01
8520
MSBuild 在编写编译任务的时候判断当前是否在 Visual Studio 中编译
我们这里说的编译任务是 MSBuild 的 Target。虽然只有少部分,但确实有一些情况需要判断是否在 Visual Studio 中编译的时候才需要执行的编译任务,典型的如某些仅为设计器准备的代码。
walterlv
2023/10/22
2600
在 C++ 中,你甚至可以 b()()()(); ——介绍 ref qualifier
在传统 C++ 中,成员函数通过 this 指针访问。可以处理所有需要左值的情况。
春帆
2018/07/25
1.3K0
系统上是否可以只共存多个版本visual c++可再发行包最新版的验证结果
最近在添加与删除程序中发现,系统中Microsoft Visual C++ Redistributable Package存在很多版本的,从2005、2008、2010都有,而且同一个发行版下还存在多个版本的。这都是安装visual studio(我只安装了visual studio 2012)、各类软件自带的发行包搞的。
williamwong
2018/07/24
3.1K0
系统上是否可以只共存多个版本visual c++可再发行包最新版的验证结果
【C++】定义自己的String类
这个实现的string类是比较简单的,C++标准模板库里面的string类的方法是非常多的,而且非常复杂。 在这里仅仅给大家演示string内部大概的实现方法
谙忆
2021/01/21
5040
【C++】定义自己的String类
8.3 C++ 定义并使用类
C/C++语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。C/C++语言具有很高的效率和控制能力,但也需要开发人员自行管理内存等底层资源,对于初学者来说可能会有一定的难度。
王瑞MVP
2023/10/21
2350
8.3 C++ 定义并使用类
C++ 自定义复数类
C++练习。 功能:自定义复数类型,实现复数的加、减、乘、除、求共轭复数、乘方、开方等运算。 涉及到的基础知识点有: 运算符重载(+,-,*,/, <<, ^, ==, != 等运算符的重载) 友元函数(友元函数可访问类的私有属性) 函数返回指向数组的指针。此例中数组的元素是类的对象。 左值引用与右值引用 主动抛出异常(使用关键字throw) #include <iostream> #include <cmath> using namespace std; class Division_by_zer
用户6021899
2021/05/20
1.4K0
在 Visual Studio 中配置 Eigen库
Eigen是一个开源的C++库,主要用来支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。Eigen 目前(2022-04-17)最新的版本是3.4.0(发布于2021-08-18),除了C++标准库以外,不需要任何其他的依赖包。Eigen库的下载地址为:https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip
全栈程序员站长
2022/09/27
4.3K0
java9-可以在interface中定义私有方法了
在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法。只允许我们定义public访问权限的方法、抽象方法或静态方法。但是从Java 9 开始,Interface 接口中允许定义私有方法和私有静态方法。下面我们就来为大家介绍其语法规则,和为什么要有这样的设计。
字母哥博客
2020/10/14
1.8K0

相似问题

是否可以在ColdFusion中取消定义变量?

30

是否可以使用JRuby取消定义Java类?

20

Visual C++是否支持循环取消切换?

20

在visual c++中取消虚拟化

20

是否可以在visual c++中创建按钮矩阵

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档