草庐IT

dynamics-ax-2012

全部标签

C++11 Dynamic Cast If Else Chain -> 开关

考虑以下几点:structB{};templatestructD:B{Tt;}voidg(inti){...}voidg(strings){...}voidg(charc){...}voidf(B*b){if(dynamic_cast*>(b)){g(dynamic_cast*>(b)->t);}elseif(dynamic_cast*>(b)){g(dynamic_cast*>(b)->t);}elseif(dynamic_cast*>(b)){g(dynamic_cast*>(c)->t)}elsethrowerror;};这里只有三种可能的T类型——int、string、char

c++ - Visual Studio 2012 中的 round()、rint()(等等)C++ 函数在哪里?

这些页面:http://www.cplusplus.com/reference/cmath/round/http://www.cplusplus.com/reference/cmath/rint/暗示这些函数是C++11的一部分,而VisualStudio2012似乎基本上支持C++11中的所有内容……所以四舍五入函数到底在哪里(更不用说其他附加数学函数了)?!我知道如何滚动我自己的舍入函数,但在这一点上它看起来很荒谬。我是否只是在这里遗漏了一些东西并且有一些特殊的std::和tr1::组合或另一个头文件来访问这些? 最佳答案 正如

c++ - 有 "dynamic decltype"吗?

这个问题与decltype和多重继承有关。假设我有以下内容:一个带有一些虚拟方法的抽象类A,一些派生类使用以前的虚拟方法实现方法(这些类中的每一个都是一种用例),一个最终的具体类,它继承了先前用例的子集并实现了纯虚拟方法。例如:#include/***"Iterablecontainer"*/templatestructA{virtualT*data()=0;virtualconstT*data()const=0;virtualunsignedsize()const=0;T*begin(){returndata();}T*end(){returndata()+size();}const

c++ - 如何使用 dynamic_cast 正确向下转换?

我对dynamic_cast很困惑.来自C++Primer和cppreference的Material(规则5)不能帮助我理解。(cppreference比书难得多,我都非常仔细地阅读了它们)来自C++Primer5th:dynamic_cast(e)Inallcases,thetypeofemustbeeitheraclasstypethatispubliclyderivedfromthetargettype,apublicbaseclassofthetargettype,orthesameasthetargettype.Ifehasoneofthesetypes,thentheca

c++ - dynamic_cast 通常是如何实现的?

类型检查仅仅是整数比较吗?或者有一个GetTypeId虚拟函数来区分哪个使其成为整数比较有意义吗?(只是不想让事情成为类名上的字符串比较)编辑:我的意思是,如果我经常期待错误的类型,使用类似的东西是否有意义:structToken{enum{AND,OR,IF};virtualstd::size_tGetTokenId()=0;};structAndToken:publicToken{std::size_tGetTokenId(){returnAND;}};并使用GetTokenId成员而不是依赖于dynamic_cast。 最佳答案

c++ - 将 MSVS 2010 项目转换为 MSVS 2012 RC 但出现错误 "The C++ standard doesn' t 为此类型提供哈希”

我有一个项目在MSVS2010SP1下运行良好。我正在尝试将其转换为MSVS2012RC。我不得不更改一些内容,主要与C++header/lib路径和MFC自定义内容有关。但我还有最后一个障碍需要清除。在MSVC2010中,我使用了很多unordered_map,int>或map,int>。它编译得很好。但是在MSVS2012中,我只是得到这个错误:“C++标准不提供这种类型的散列”在网上搜索了一下,发现MSVS2012应该更接近C++11标准,标准只定义了基本类型的哈希函数和定义的4种字符串类型(其中string和wstring,但不包括basic_string)。所以我将所有bas

c++ - 在 C++ 中创建 boost dynamic_bitset 的 vector

我想创建一个动态位集数组。所以我创建了一个dynamic_bitsetvector,vector>v;如何指定每个动态位集的大小,即v[0]、v[1]等?与一般情况一样,我们通过构造函数指定大小。boost::dynamic_bitsetx(3); 最佳答案 这一行vector>v;创建一个空vector。相反,您可以要求它填充所有具有相同值的默认条目,所以就像通常那样vectorv(N,1);用N创建一个vector条目所有1你可以做vector>v(N,boost::dynamic_bitset(3));让它包含Nboost::

c++ - VC++2012如何切换到设计 View ?

我刚刚安装了VisualStudio2012专业版,我打算编写我的第一个HelloWorld应用程序,但找不到设计器View!如何在VisualC++2012Professional中切换到设计器模式? 最佳答案 也许你习惯了C#,当你说MyForm.cs并且你只是打开它时,它默认打开MyForm.cs[Design]窗口,您可以在其中设计对话。在VisualC++中,对话框的外观存储在资源文件中,因此您需要双击Win32Project3.rc,这会将您的左Pane切换到资源View。然后你会看到更多资源类型(它们看起来像文件夹),

c++ - dynamic_cast 中的类型必须是指向完整类类型的指针或引用,或者 void *

我希望有人能理解为什么下面的代码会失败。我正在尝试从osg::Node*节点对象获取PositionAttitudeTransform(Openscenegraph类)的实例。但是下面是粗体的编译器错误。voidCameraPosCallbackUpdate::operator()(osg::Node*node,osg::NodeVisitor*nv){//othercodegoeshereosg::PositionAttitudeTransform*pat=dynamic_cast(node);}IntelliSense:dynamic_cast中的类型必须是指针或对完整类类型的引用

c++ - 智能感知 : namespace "MSXML2" has no member "DOMDocument" in VS2012

我正在尝试编译我继承的项目,然后遇到了这个错误。以下是一些相关代码:#include...HRESULThr;hr=pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument));有人可以帮忙吗? 最佳答案 我在Windows8中看到了类似的问题。似乎MSXML6.0没有公开DOMDocument,但它确实公开了DOMDocument60。为了帮助其他人通过搜索到达这里,您可能还会看到的编译器错误是:错误C2039:“DOMDocument”:不是“MSXML2”的成员尝试进行以下更改以明确使用