templates相关内容
大家好,我对模板和多态性有疑问.根据定义,多态性提供代码可重用性,并且模板在某种意义上允许用户通过提供具有不同数据类型的通用编程来使用相同的代码.那么在模板上使用多态性有什么好处.这可能是一个愚蠢的问题,但我很想知道确切的区别. 解决方案 你好像误解了什么是多态性. 多态性的核心与派生类无关.多态性仅仅意味着在不知道所有类型的情况下使用类型的能力.多态性不是使用具体类型,而是依赖于某
..
祝大家圣诞快乐! 我正在学习静态多态性,并且正在阅读 Andrei Alexandrescu 关于基于策略的设计的优秀书籍.我在我的代码中遇到了以下内容:我有接口 Interface 指定方法 Foo 必须存在.该接口将由类 Impl 实现.我有以下两种选择: 1) 动态多态性 类接口{上市:虚空 Foo() = 0;}类Impl:公共接口{上市:无效 Foo() {};} 2)
..
我们有一个子项目“commonUtils",其中包含在整个父项目中使用的许多通用代码片段.我看到的这样一个有趣的东西是:- /******************************************************************************如果 T 是多态的,编译器需要计算 typeid运行时的东西,答案将是真实的.如果 T 是非多态的,编译器需要在编译
..
A 类{朋友 void foo();虚拟 void print_Var() const{};};//不包含变量 Var;模板B类:公共A{T 无功;上市:B(T x):Var(x){}void print_Var() 常量覆盖{std::coutVar//A 中没有名为 Var 的成员//显然基类不包含这样的变量//if (i->Var==20) {/* 做某事*/}//if (i->Va
..
我有这种类结构. 类接口{//...};类Foo:公共接口{//...};模板类容器{//...}; 我还有其他一些 Bar 类的构造函数. Bar(const Container & bar){//...} 当我以这种方式调用构造函数时,我得到一个“没有匹配的函数";错误. 容器容器 ();酒吧 * 温度 = 新酒吧(容器); 怎么了?模板不是多态的吗?
..
是否可以在模板中包含模板?也许类似于 ERB 处理部分的方式? 与其尝试以 ERB 之类的方式渲染嵌套模型,不如让 Backbone.js 来处理. 注意,我使用的是 coffeescript 语法: Projects.IndexView 模板:JST["backbone/templates/projects/index"]addAll: () ->@options.proje
..
好吧,这似乎是一个愚蠢的问题,但它是这样的: 模板无效 foo(T&x){}主函数(){富(42);//传递 'void foo(T&) [with T = int]' 的参数 1 时出错} 是什么阻止了 C++ 用 T = const int 来实例化 foo 函数模板? 解决方案 问题是模板类型推导必须计算出精确匹配,而在这种特殊情况下,由于签名中的引用,精
..
以下示例在我手动替换 T wirh char * 时有效,但为什么不能按原样工作: 模板A类{上市:A(常量 T _t) { }};诠释主要(){const char * c = "asdf";一个一(三);} 使用 gcc 编译时,我收到此错误: test.cpp:在函数'int main()'中:test.cpp:10:错误:从 'const ch
..
来自 Herb Sutter 的 GotW #6 对于非内置返回类型,按值返回通常应该是 const.... 注意:Lakos(第 618 页)反对返回 const 值,并指出无论如何它对于内置程序都是多余的(例如,返回“const int"),他指出这可能干扰模板实例化. 虽然 Sutter 在使用 Lakos 按值返回非内置类型的对象时似乎不同意返回 const 值还是非常量
..
当 T 为 double(float)const 时,当我尝试使用 function 时出现此错误. 隐式实例化未定义模板'std::function' 但是当T为double(float)时就可以了.我尝试使用 std::remove_cv::type 来删除这个 const,但这不起作用.是的,我有 #include
..
这个模板中const关键字的作用是什么? 模板类矩阵 这是否意味着这个模板只接受一个 const 作为参数?如果是这样,有没有办法将变量作为 COLNUM 和 ROWNUM 传递? (当我尝试将变量作为模板的 COLNUM 传递时,它会给出错误:“IntelliSense:表达式必须具有常量值")
..
reinterpret_cast std::pair 是否安全(理论上或实际上)const & 变成 std::pair;const &,假设程序员没有故意做一些奇怪的事情,比如专门化 std::pair? 解决方案 这样做是不可移植的. std::pair 要求在第 20.3 节中列出.第 17.5.2.3 条阐明了 第 18 到 30 条和附录
..
以下两种语法有什么区别: 模板结构A;//(1) 和 template结构A;//(2) 关于何时使用每种语法的任何一般准则? 解决方案 没有. §14.1 [temp.param] p5 [...] template-parameter 上的顶级 cv-qualifiers 在确定其类型时会被忽略.
..
听说临时对象只能分配给常量引用. 但是这段代码出错了 #include 模板常数&查看(){返回 t();//返回一个临时对象}int main(int argc, char** argv){const int &resCheck = check();/* 美好的 */typedef int&参考;const ref error = check
..
使用 g++ 的正确方法是什么: 模板 空隙 g (F f);模板 解决方案 我想你也需要在捕获列表中展开pack a,像这样: 模板 无效 f (A ... a) {g ([&, a...] () { h (a...); });} 这是来自 C++0x 最终委员会草案,第 5.1.2.23 节的相关文本: 捕获后跟省略号是包扩展(14.5.
..
假设我有 fileA.h,它使用模板函数 SomeFunc() 声明了一个类 classA.该函数直接在头文件中实现(与模板函数一样).现在我在 fileA.C (即不在头文件). 如果我现在从其他代码(可能也来自其他库)调用 SomeFunc(),它会调用通用版本还是专业化版本? 我现在有这个问题,类和函数存在于一个库中,由两个应用程序使用.一个应用程序正确地使用了专
..
我有以下 C++11 代码. #include 使用 IntType = unsigned long long;模板结构诠释 {};模板结构 is_int : std::false_type {};模板struct is_int>: std::true_type {};主函数(){static_ass
..
我正在尝试 关于专门模板类的问题. 此代码在 g++ 中编译良好,但在使用 gcc 编译时会引发链接器错误.这些错误的原因是什么? $ g++ traits2.cpp$ gcc 特征2.cpp/tmp/ccI7CNCY.o:在函数“__static_initialization_and_destruction_0(int, int)"中:traits2.cpp:(.text+0x36):
..
我有一个包含以下内容的文件: #include A类{};无效 doSomething() {std::map米;} 当使用 g++ 编译成共享库时,该库包含 std::map 的所有方法的动态符号.由于 A 对该文件是私有的,因此 std::map 不可能在具有相同参数的任何其他共享库中实例化,所以我想隐藏模板实例化(出于本文档中描述的一些原因).p> 我认为我应
..
我有如下 GetContainer() 函数. 模板集装箱&ObjCollection::GetContainer(){返回 mContainer;} 当我如下使用这个方法时 模板夯;DynamicObjCollection::Insert(T&t){GetContainer().insert(&t);返回 t;} 我遇到了错误. 错误:‘GetContainer’没有依赖于模
..