草庐IT

weak-template-vtables

全部标签

c++ - .template (dot-template) 构造用法

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:WhereandwhydoIhavetoputthe“template”and“typename”keywords?我遇到了一段奇怪的代码:#includetemplatestructCollection{intdata[N];Collection(){for(inti=0;iintGetValue(void)const{returndata[I];};};templatevoidprintElement(Collectionconst&c){std::cout()myc;myc.SetValue(5);pr

c++ - 为什么不能从 unique_ptr 构造weak_ptr?

如果我理解正确,weak_ptr不会增加托管对象的引用计数,因此它不代表所有权。它只是让您访问一个对象,该对象的生命周期由其他人管理。所以我真的不明白为什么不能从unique_ptr构造weak_ptr,而只能从shared_ptr构造。有人能简单解释一下吗? 最佳答案 如果您考虑一下,weak_ptr必须引用对象本身以外的其他内容。这是因为对象可以不复存在(当没有更多的强指针指向它时)并且weak_ptr仍然必须引用包含对象不再存在的信息的东西。使用shared_ptr,该东西就是包含引用计数的东西。但是对于unique_ptr,

c++ - 模板内的模板 : why "` >>' should be ` > >' within a nested template argument list"

我知道当我们在另一个模板中使用模板时,我们应该这样写:vector>s;如果我们写的时候没有空格:vector>s;我们会得到一个错误:`>>'shouldbe`>>'withinanestedtemplateargumentlist我认为这是可以理解的,但我不禁想知道,在什么情况下这真的是模棱两可的? 最佳答案 有时你希望它是>>。考虑boost::array>2>x;在C++03中,这成功地解析并创建了一个大小为256的数组。 关于c++-模板内的模板:why"`>>'shouldb

c++ - 对 vtable 的 undefined reference 。试图编译一个 Qt 项目

我正在使用Code::Blocks8.02和mingw5.1.6编译器。编译Qt项目时出现此错误:C:\DocumentsandSettings\TheFuzz\Desktop\GUI\App_interface.cpp|33|undefinedreferenceto`vtableforAddressBook'文件地址簿.h:#ifndefADDRESSBOOK_H#defineADDRESSBOOK_H#includeclassQLabel;classQLineEdit;classQTextEdit;classAddressBook:publicQWidget{Q_OBJECTpub

c++ - shared_ptr<> 对 weak_ptr<> 就像 unique_ptr<> 对...什么?

在C++11中,您可以使用shared_ptr建立与对象或变量的所有权关系和weak_ptr以非拥有的方式安全地引用该对象。您也可以使用unique_ptr建立与对象或变量的所有权关系。但是,如果其他非拥有对象也想引用该对象怎么办?weak_ptr在这种情况下没有帮助。原始指针很有帮助,但也带来了各种缺点(例如,它们可以是automaticallyinitializedtonullptr,但这是通过与std::*_ptr类型不一致的技术来实现的)。weak_ptr的等价物是什么?对于通过unique_ptr拥有的对象的非拥有引用?这是一个清晰的示例,类似于我正在开发的游戏中的某些内容。

c++ - weak_ptr 是如何工作的?

我了解如何使用weak_ptr和shared_ptr。通过计算对象中的引用数,我了解shared_ptr的工作原理。weak_ptr是如何工作的?我尝试通读boost源代码,但我对boost不够熟悉,无法理解它使用的所有东西。谢谢。 最佳答案 shared_ptr使用额外的“计数器”对象(又名“共享计数”或“控制block”)来存储引用计数。(顺便说一句:那个“计数器”对象也存储了删除器。)每个shared_ptr和weak_ptr都包含一个指向实际指针对象的指针,以及一个指向“计数器”对象的第二个指针。为了实现weak_ptr,“

c++ - 将 'typedef' 从基础类传播到 'template' 的派生类

我正在尝试定义仅包含typedef的基类。templateclassA{public:typedefstd::vectorVec_t;};templateclassB:publicA{private:Vec_tv;//fails-Vec_tisnotrecognized};为什么在B中收到Vec_t无法识别的错误,我需要显式编写?typenameA::Vec_tv; 最佳答案 我相信这个问题是重复的,但我现在找不到。C++标准说您应该根据14.6.2/3完全限定名称:Inthedefinitionofaclasstemplateor

templates - 在 Go 模板中迭代一系列整数

我正在尝试在模板中进行迭代以进行分页,但似乎没有办法进行迭代。代替{{range$i,$e:=.aSlice}}我想做这样的事情{{range$i:=1..10}}{{$i}}{{end}}有什么建议吗?谢谢! 最佳答案 您可以使用包github.com/bradfitz/iter以最少的工作量为了那个原因。它提供了一个函数N,你可以像这样使用它:{{range$i,$_:=N10}}{{$i}}{{end}}使用模板上的Funcs方法添加函数N,如下所示:myTemplate.Funcs(template.FuncMap{"N":

templates - 你如何传递多个对象去模板?

我能找到的大多数示例都描述了非常简单/基本的事情,例如像这样显示人员对象的属性:Thenameis{{.Name}}.Theageis{{.Age}}.如果你有一个更复杂的网页会发生什么,例如,多个不同的对象和对象列表,即你如何做这样的事情:{{p.Name}}isaged{{p.Age}}.Outstandinginvoices{{invoices.Count}}{{invoices[0].number}}....etc... 最佳答案 您可以像这样声明并传入一个匿名结构:templ.Execute(file,struct{Age

templates - Golang 模板 : for construction

Golanghttp/template有替换功能,if构造,但是我没有找到for构造。如何遍历slice?像这样:{{forxinxs}}Hello,{{x.Name}}!{{end}} 最佳答案 使用范围{{rangexs}}Hello,{{.Name}}!{{end}} 关于templates-Golang模板:forconstruction,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/que