草庐IT

c++ - 为什么我们使用非类型模板参数?

我理解这个概念,但我不知道为什么我需要使用非类型模板参数? 最佳答案 有很多用例,所以让我们看一下它们必不可少的几种情况:固定大小的数组或matrix类,例如C++11std::array或boost::array.std::begin的可能实现对于数组,或任何需要固定大小的C样式数组大小的代码,例如:返回数组的大小:templateunsignedintsize(Tconst(&)[N]){returnN;}它们在模板元编程中也非常有用。 关于c++-为什么我们使用非类型模板参数?,我

c++ - 非类函数可以私有(private)化吗?

我在我创建的命名空间中有一些函数,这些函数在我的整个程序中都在使用。在头文件中:namespaceNQueens{staticintheur=0;intCalcHeuristic(char**state,intsize);voidCalcHorzH(char**state,int&heuristic,intsize);voidCalcColH(char**state,int&heuristic,intsize);voidCalcDiagH(char**state,int&heuristic,intsize);intcalcCollisions(intqueensPerRow,intsi

c++ - 使用非托管接口(interface)包装托管

我有一个公开一些接口(interface)的非托管库。用户可以实现接口(interface)并将它们与自定义实现一起粘贴到库中。我想为这个库提供一个托管包装器。用托管接口(interface)包装非托管接口(interface)很容易。但就我而言,我想支持各种接口(interface)的用户实现,这意味着我需要采用接口(interface)的托管实现并使用其非托管对应项将其包装,然后再将其发送到库的非托管部分的深处。我试过类似的方法:classUnmanagedWrapper{DoSomething(){m_clr.DoSomething();}IManaged^m_clr;}但我不能

C++ 用非静态函数重载静态函数

我想打印两种不同的东西,这取决于函数是使用Foo::print()静态调用还是从Foofoo的实例调用;foo.print();编辑:这是一个绝对不起作用的类定义,正如一些人已经回答的那样。classFoo{stringbla;Foo(){bla="nonstatic";}voidprint(){cout但是,有没有什么好的方法可以达到这个效果呢?基本上,我想做的是:if(thisisastaticcall)doonethingelsedoanotherthing换句话说,我知道PHP可以检查*this变量是否被定义,以确定函数是否被静态调用。C++有同样的能力吗?

c++ - 为什么非静态数据成员初始化程序会破坏统一初始化语法?

如果您所有的类/结构数据成员都缺少初始化器,您可以使用统一的初始化语法来构造对象。structfoo{inti;floatf;};...foobar{5,3.141f};但是如果一个或多个成员有初始化器,统一的初始化语法就失效了。structfoo{inti;floatf=0;};...foobar{5,3.141f};//Compilererror.我推测,添加一个数据成员初始值设定项会自动实现一个或多个默认构造函数,并抑制initialization_list构造函数的默认实现。这是预期的标准吗?为什么会这样? 最佳答案 是的,

c# - 需要从非托管 C++ 代码调用托管代码

我用C#写了COM类,一个函数是这样的:publicvoidSignAttached(byte[]message,refbyte[]signedMessage,stringuserName="USER")当我尝试从C++代码调用此函数时,我遇到了异常:-“等级12536的SafeArray已传递给期望等级为1的数组的方法。未知错误0x80131538”,并且每次都更改第一等级,C++代码:SAFEARRAY*message=SafeArrayCreateVector(VT_UI1,0,1);SAFEARRAY*signedMessage=SafeArrayCreateVector(VT

c# - 通过引用将 char** 从 C# 传递到非托管 C++

这是C#代码。namespaceCameraTest{classProgram{staticvoidMain(string[]args){string[]lst=newstring[10];for(inti=0;i非托管方法是这样的。BOOLWINAPICAM_EnumCameraEx(BOOLbSynchronized,char**ppCameraList,longlMaxCamera,longlMaxCharacter);该方法写入传入的字符串数组。有没有办法从C#调用此方法并让非托管代码能够写入字符串数组? 最佳答案 感谢Re

c++ - Clang++ Xcode 4.4 非静态成员初始化和移动构造函数

我正在使用Xcode4.4和mountainlion。我似乎无法理解为什么模板中的非静态成员初始化会调用变量的移动构造函数。无论如何要克服这个错误?示例代码:#include#include////Thisclasscancompile//classWorking{public:intGetValue(){returnvalue_;}private:std::atomicvalue_{0};};////Thisclasscannotcompile//templateclassNotWorking{public:intGetValue(){returnvalue_;}private:st

C++11 正则表达式,非贪婪

我对C++11正则表达式有点问题,我认为它与贪婪有关。这是一个小例子。#include#include#includeintmain(void){std::stringin="{ab}{cd}[ef]{gh}[ij][kl]";//theinput-stringstd::regexrx1("(\\{.+?})(.*)",std::regex::extended);//non-greedy?std::smatchmatch;if(regex_match(in,match,rx1)){printf("\n%s\n",match.str(1).c_str());}return0;}我希望{a

c# - 将指向对象的非托管 C++ 指针转换为托管 C# 对象

我有一个用C++编写的非托管静态库(.dll)://Thisisapersonalacademicproject.DearPVS-Studio,pleasecheckit.//PVS-StudioStaticCodeAnalyzerforC,C++andC#:http://www.viva64.com#include"program.h"structMyData{int32_tindex;char*name;//uint8_t*data;};extern"C"{__declspec(dllexport)MyData*GetMyData(){MyData*ms=newMyData();m