草庐IT

位置图

全部标签

c++ - 如何通过编译错误找到 C++ 复制构造函数的使用位置?

简而言之:有没有什么方法可以修改类定义,使其在复制构造函数的使用点处无法编译,无论它在何处使用?我有一个非常大的项目,正在清理一些类定义。有一个类我明确不想使用复制构造函数(让我们忽略为什么这是为了讨论),为了安全起见,我想我只是将复制构造函数定义为私有(private)而不是实际上实现它......如果我试图在任何地方使用它,它会抛出一个编译错误。瞧,它编译得很好,但我有一个链接器错误......找不到复制构造函数实现!大概这意味着它在某处使用,但我无法找到它的使用位置。顺便说一句,这是VisualStudio2010。所以我的问题是,有没有什么方法可以修改类定义,使其在使用时无法编

c++将地址位置视为整数

我想知道是否可以将变量的地址位置存储为整数值。例如,假设我在内存中的某个位置存储了一个数字inti=20;而我们知道例如变量i的位置是0x77C79AB2。例如int*ip=&i;所以我们知道ip=0x77C79AB2。但是此时变量ip只是一个指针。但是假设我现在想将地址位置0x77C79AB2存储到一个int类型的变量中(不是Pointer类型)。所以,不知何故,我希望能够创建另一个类型(int)的变量来实际存储数字0x77C79AB2作为值而不是地址位置。inta=0x77C79AB2;所以,我可以用变量a做任何我想做的事。例如,我想将a视为整数并向其添加一个十六进制数0x20。例

c++ - 在 c++ 中加速 map<string,int> .find() 的最快方法。按键按字母顺序排列的位置

我有一张包含大约100,000对的map。有什么方法可以在使用find()时加快搜索速度,因为键是按字母顺序排列的。另外我应该怎么做。我知道您可以在创建map时指定一个新的比较器。但这会加速find()函数吗?提前致谢。[已解决]感谢一群人,我决定使用vector并使用下界和上界来“剪断”一些搜索。我也是新来的,有什么方法可以将这个问题标记为已回答,或者选择一个最佳答案吗? 最佳答案 不同的比较器只有在设法更快地进行比较时才会加快查找速度(这对于字符串通常非常困难)。如果您基本上是按顺序插入所有数据,然后进行搜索,则使用std::v

c++ - 如何查明长函数返回的位置

假设有一个名为LongFunction的1000行代码的函数,我们使用了它:boolbSuccess=LongFunction();assert(bSuccess);这里在调试的时候得到了一个断言,我知道LongFunction有问题,所以我需要找到函数在哪里遇到问题并返回:我可能会逐步调试它,它可以工作但很耗时,我们不知道该怎么做。我可以搜索关键字“return”(或者使用RegExp进行更精细的搜索),并在这些返回处设置断点,应该会更快,但仍然是一项繁琐的手动工作,无法自动化。#definereturnTRACE(LINE);返回它有效但有以下问题:由于经常使用return,它会打

c++ - C++中的delete如何知道要删除多少个内存位置

删除运算符是如何工作的?它比free()更好吗?此外,如果您执行ptr=newchar[10],然后使用deleteptr删除,指针如何知道要删除多少个位置。 最佳答案 只有delete操作符,free只作为函数存在。在C++下,我们鼓励您使用new/delete而不是malloc()/free()。删除运算符有一个内部的“魔法”。当使用new[]创建数组时,数组的大小存储在内存块的元数据中。delete[]使用该信息。所有这些当然都依赖于编译器、操作系统、优化器和实现。 关于c++-C

c++ - 如何找到在 g++ 代码中调用给定成员函数或 ctor 的所有位置?

我试图在一个庞大而陈旧的代码库中找到所有调用了某些构造函数或函数的地方。具体来说,这些是std::string中的某些构造函数和成员函数。类(即basic_string)。例如,假设有一行代码:std::stringfoo(fiddle->faddle(k,9).snark);在这个例子中,看这个并不明显snark可能是char*,这是我感兴趣的。目前尝试解决这个问题我研究了gcc的一些转储功能,并生成了其中一些功能,但我没能找到任何告诉我给定代码行将生成对string的调用的信息。构造函数采用constchar*.我还使用-s编译了一些代码以保存生成的等效汇编代码。但这有两个问题:函

QListWidget 自定义 item的图标和文字的位置

目录前言思路一思路二思路二缺陷思路三思路四前言楼主并没有完整的解决这个问题,如果你是着急寻找解决方案的就可以划走了,如果你对楼主的解决思路有兴趣,那么可以继续向下阅读。首先需求是可以控制QListWidgetItem的icon和textx轴的位置,但是同时保持icon在左text在右的基本布局,还要求styleSheet能够生效。思路一做一张两边透明中间显示的图片。这样就可以控制icon和text的位置了。楼主没有试过实际效果思路二使用QListWIdget的setItemWIdget接口。mainwindow.cpp#include"mainwindow.h"#include"ui_main

c# - 秒表根据代码所在的位置给出不同的结果

我的C#项目中出现了一些令人困惑的Stopwatch结果。考虑以下代码:staticvoidMain(string[]args){byte[]myEventArray=GetEventByteArrayFromDatabase();byte[]myEventItemsArray=GetEventItemByteArrayFromDatabase();uintnumEvents=1000;uintnumEventItems=1000;Stopwatchsw1=Stopwatch.StartNew();TestFunction(refmyEventArray,numEvents,refmy

c++ - 原子访问 C++11 和 OpenMP 中的非原子内存位置?

与C++11相比,OpenMP从内存操作而非变量的角度处理原子性。例如,这允许在编译时对存储在大小未知的vector中的整数使用原子读/写:std::vectorv;//non-atomicaccess(e.g.,inasequentialregion):v.resize(n);...v.push_back(i);...//atomicaccessinamulti-threadedregion:#pragmaompatomicwrite//seq_cstv[k]=...;#pragmaompatomicread//seq_cst...=v[k];在C++11中,这是不可能实现的。我们可

c++ - 默认参数位置的 Lambda 无法访问友元成员。这是编译器错误吗?

我正在尝试编译一个使用超现代神秘编码技术编写的程序。这些技术非常先进,GCC和Clang可以工作,但VisualStudio2017会抛出错误。现在我想知道VisualStudio是否做对了。考虑以下程序:#include#includeclassA{public:A(inti):foo(i){}private:intfoo;friendclassB;};classB{public:voidprintFooFromA(constA&a,std::functionprinter=[](constA&a){std::coutVisualStudio抛出错误C2248:“A::foo”:无法