草庐IT

C++ 错误 : Expected a type specifier

当我尝试像这样使用LoggerStream时,我得到“需要一个类型说明符”:constLoggerStreamlogger(L"测试组件");这是我尝试使用LoggerStream的地方:#include"Logger.h"#include"TestComponent.h"namespaceophRuntime{structTestComponent::TestComponentImpl{private:LoggerStreamlogger(L"TestComponent");NO_COPY_OR_ASSIGN(TestComponentImpl);};TestComponent::T

c++ - 用户定义类型的 std::common_type 特征

自C++11以来,引入了类型特征std::common_type。std::common_type确定其所有模板参数之间的公共(public)类型。在C++14中,还引入了辅助类型std::common_type_t以缩短使用std::common_type类型特征的代码。std::common_type在重载算术运算符中特别有用,例如,templatestd::common_type_toperator+(T1const&t1,T2const&t2){returnt1+t2;}如果它的模板参数是内置类型(例如,int、double),它会工作得很好。但是,如果我将用户定义的类型作为模

c++ - 为什么这个构造函数重载解析不正确?

这是我的(剥离的)类和一个对象的实例化:template>classCarray{typedeftypenameAllocator::size_typesize_type;//...explicitCarray(size_typen,constT&value,constAllocator&alloc=Allocator()){//...}templateCarray(InputIteratorfirst,InputIteratorlast,constAllocator&alloc=Allocator()){//...}//...}Carrayarray(5,10);我希望这会调用Car

c++ - 无法将参数 1 从 'cli::interior_ptr<Type>' 转换为 'CvCapture **'

我正在抓取一个视频帧如下CvCapture*capture=cvCreateFileCapture("PATH");我可以阅读视频并处理它。一切正常。但是当我尝试释放捕获时cvReleaseCapture(&capture);我明白了errorC2664:'cvReleaseCapture':cannotconvertparameter1from'cli::interior_ptr'to'CvCapture**'with[Type=CvCapture*]Cannotconvertamanagedtypetoanunmanagedtype函数在一个类中。publicrefclassLoc

c++ - 我可以在 vector 的一个实例上使用 value_type,而不是它的类型吗

在播放和尝试计算vector的总大小时,我尝试了类似的方法vectorvd;autoarea=vd.size()*sizeof(vd::value_type);//IveseenStepanovuseareaasnameforthiskindofsize,idkifheaddsthesizeofvdalsotoarea:)不幸的是,这不起作用......我需要使用vector::value_type但这会降低代码的可读性。它可以工作吗?我不喜欢sizeofvd.front()因为写front()看起来很难看为此。编辑:decltype变体也适合我所说的丑陋类别......

c++ - 将集合论应用于 C++11 可变参数模板

假设我有两个可变参数模板;typename...T,typename...U,我该如何找到它们;串联最大公共(public)子序列最大公共(public)子序列的逆据我了解,连接很简单;(t...,u...),但是如何找到两者的最大公共(public)子序列呢?-这有可能吗? 最佳答案 这是一个计算对元组类型对的集合操作的解决方案。我假设元组可以用来保存变量参数包,所以一旦你有了Ts...和Us...,你这样做:typenametuple_intersect,std::tuple>::type这为您提供了一个元组,其中Vs...是T

c++ - 容器模板参数的 value_type

在他今年GoingNative的主题演讲中TheEssenceofC++(转到40:30)BjarneStroustrup给出了以下代码示例:templatevector*>find_all(C&cont,Vv){vector*>res;for(auto&x:cont)if(x==v)res.push_back(&x)returnres;}此函数用于查找容器中所有出现的值并返回指向找到的元素的指针。视频中的示例:stringm{"Maryhadalittlelamb"};for(constautop:find_all(m,'a'))//pisachar*if(*p!='a')cerr我

c++ - 将深拷贝构造函数添加到 std::unique_ptr<my_type>

我想存储一些std::unique_ptr进入std::vector.自my_type提供一个clone()制作my_type*的深拷贝非常简单.重点是如何扩展std::unique_ptr在添加复制构造函数和赋值运算符的同时保留其所有功能。遗产?模板特化?你能提供一个代码片段吗? 最佳答案 std::unique_ptr的目的是使其唯一,即它不应该是可复制的。这就是为什么他们将其设为只能移动的原因。它用于表示唯一所有权。如果你想做一个深拷贝然后让你的拷贝构造函数完成它的工作,这就是它的用途。std::unique_ptrptr1{

C++ 使用一种方法且没有警告地实现不同类型赋值的优雅方法?

我必须实现基本相同的功能,但尺寸不同。具体来说,它类似于...type&operator=(unsignedint);type&operator=(unsignedlongint);type&operator=(unsignedlonglongint);type&operator=(int);type&operator=(longint);type&operator=(longlongint);type&operator=(shortint);//soonandsoforth...他们必须做完全相同的事情......(除了我应该考虑不同的大小),主要思想是“如果类型是最广泛的使用任务的

C++ 析构函数返回类型

析构函数是一种特殊的成员函数,它不接受任何参数,也没有返回类型:几乎所有的C++书籍中都提到了这一点。但是,在libstd++库中,它使用以下内容来测试类型是否可破坏,struct__do_is_destructible_impl{template().~_Tp())>statictrue_type__test(int);templatestaticfalse_type__test(...);};Gnug++会显示带有typeidvoid的_U,那么,析构函数会返回一个类型吗?请专家解释一下c++标准对此有何规定。 最佳答案 请注意