草庐IT

c++ - 在模板函数中声明依赖于未知类型的变量

假设我正在编写一个具有类型参数T的模板函数foo。它获得一个必须具有方法bar()的类型T的对象。在foo内部,我想创建一个由bar返回的对象类型的vector。在GNUC++中我可以这样写:templatevoidfoo(Tx){std::vectorv;v.push_back(x.bar());v.push_back(x.bar());v.push_back(x.bar());std::cout如何在MicrosoftVisualC++中做同样的事情?有什么方法可以编写在GNUC++和VisualC++中都有效的代码吗? 最佳答案

c++ - 获取变量类型

如果我没理解错的话,在多态中typeid可以确定实际的类型,而typeof则不能。他们的return是不是也有不同的用途:typeof的return作为type关键字可以定义变量,而typeid的return不可以?有没有办法既获取多态性的实际类型又使用returnastype关键字来定义另一个变量?我希望从一个指向基类的指针得到派生类的类型,并定义一个派生类的变量或指针。像这样的东西:baseclass*p=newderivedclasstypexxx(*p)*pp=dynamic_cast(p);//wouldliketoconvertthepointerfrompointingt

成员变量的C++类型名

是否可以获取成员变量的类型名?例如:structC{intvalue;};typedeftypeof(C::value)type;//somethinglikethat?谢谢 最佳答案 C++03中没有。C++0x引入了decltype:typedefdecltype(C::value)type;有些编译器有一个typeof扩展,但是:typedeftypeof(C::value)type;//gcc如果您对Boost没意见,他们有一个library为此:typedefBOOST_TYPEOF(C::value)type;

c++ - 如何在 C++ 中键入

如何在C++中模拟C#typeof-command行为?C#示例:publicstaticPluginNodeListGetPlugins(Typetype){...}调用:PluginManager.GetPlugins(typeof(IPlugin))如何使用C++实现这个?也许QT或Boost库提供了解决方案?如果您想以一种从文件(.so或.dll)加载这些类型的对象的方式实现.GetPlugins(...),情况会怎样? 最佳答案 您可以使用dynamic_cast来测试类型,如下所示:IPlugin*iPluginPtr=

c++ - __typeof 和 typeof 有什么区别吗?

当我们向它们添加__时,还有更多的操作符可以工作。__是什么意思? 最佳答案 带有双下划线的标识符是为实现保留的。typeof是该语言的编译器特定扩展,因此将其命名为__typeof可确保没有用户代码具有同名标识符 关于c++-__typeof和typeof有什么区别吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7618873/

c++ - 自动将 c++11 auto 关键字重写为派生类型

也许是个奇怪的问题,但是有没有可用的软件,给定一堆c++11代码,派生所有类型的自动类型变量并用这些派生类型重写代码?还有初始化列表?原因是我们想提供我们代码的向后兼容版本(非C++11),主要是为了与osx的可移植性。自动输入和初始化列表是我们最常使用的功能,因为它们使代码更具可读性,但手动删除它们是不行的。由于这实际上是编译器对自动类型化变量所做的,所以它似乎并不太牵强? 最佳答案 查看BOOST_AUTO和/或BOOST_TYPEOFhttp://www.boost.org/doc/libs/1_48_0/doc/html/t

ios - 使用 Xamarin 的通用约束

我有以下具有通用类型约束的通用类型。publicclassGenericTypewhereT:IFoo{}然后我尝试从开放泛型类型创建封闭泛型类型。varfooGenericType=typeof(GenericType).MakeGenericType(typeof(IFoo));varintGenericType=typeof(GenericType).MakeGenericType(typeof(int));在模拟器中运行时,它无法尝试使用int作为预期的类型参数来创建封闭的泛型类型。但是,当在实际设备(iPhone)上运行时,它还会使用int创建一个封闭的通用类型。它似乎不遵守

unplugin-auto-import的使用

1、unplugin-auto-import插件的解决的问题unplugin-auto-import这个插件是为了解决在开发中的导入问题,比如经常不清楚相对路径的问题,这个插件就是解决这个问题这个插件会在根目录生成一个auto-import.d.ts,这个文件会将所有的插件导入到global中,这样在使用的时候直接就可以使用了2、插件安装在终端执行命令npmi-Dunplugin-auto-import配置文件vite.config.tsimport{defineConfig}from'vite'importvuefrom'@vitejs/plugin-vue'//importAutoImpo

android - @@for 不是一个函数(评估 '(typeof Symbol === ' 函数' ? Symbol.for : '@@for' ) ('jest.asymmetricMater' )')

我正在尝试运行能够在iOS上正确编译但无法在android上编译并为我们提供以下内容的react-native(0.45.1)应用程序...@@for不是函数(求值'(typeofSymbol==='function'?Symbol.for:'@@for')('jest.asymmetricMater')')有人遇到过这个吗? 最佳答案 你可能只需要添加babel-polyfillnpminstall--save-devbabel-polyfill然后import'babel-polyfill';在您的应用入口点

c++ - 如何实现BOOST_TYPEOF?

这里我想了解实现BOOST_TYPEOF的大致思路。我的意思是代码可能没问题,但我想代码不会像真正的Boost实现那样简单。因此,我想了解BOOST_TYPEOF实现的想法。它是否使用编译器函数(一些API)来理解编译时表达式的类型? 最佳答案 在核心,Boost::Typeof使用sizeof非求值上下文将表达式的类型转换为整数,然后再将其转换回类型。考虑:templatestructsizer{charvalue[N];};sizerencode(char);sizerencode(unsignedchar);sizerenco