草庐IT

dynamically-generated

全部标签

c++ - 将 NULL/0 传递给 dynamic_cast 的便携安全?

出于检查空指针的习惯,我有时会写:MyClass*c=someBasePtr?dynamic_cast(someBasePtr):0;if(c){...实际上,在传递给动态转换之前检查空指针,并检查返回。然后我阅读了MSDN文档Anullpointervalueisconvertedtothenullpointervalueofthedestinationtypebydynamic_cast.看来我可以安全地删除?:构造。这是C++便携吗?这样新的代码会是MyClass*c=dynamic_cast(someBasePtr);if(c){...当然假设someBasePtr为null或

c++ - 尝试使用 dynamic_cast 时出现 "source type is not polymorphic"

structA{};structB:A{};intmain(){A*a=newB();B*b=dynamic_cast(a);}给予:cannotdynamic_cast'a'(oftype'structA*')totype'structB*'(sourcetypeisnotpolymorphic)如何使A具有多态性?我想安全地将其转换到B。(一种方法是添加一个dummy虚函数,但有更好的方法吗?) 最佳答案 您需要使A具有多态性,可以通过添加virtual析构函数或任何虚函数来实现:structA{virtual~A()=defa

dynamic - 动态加载包

是否可以在运行时加载特定的包?我想要一种插件,每个插件都具有与其他插件相同的功能但具有不同的行为,并且根据配置文件,加载一个或另一个。 最佳答案 不,Go不支持动态加载的库。最好的办法是将插件作为自己的可执行文件启动,并通过套接字或通过stdin/stdout与其通信。2017年更新这个答案不再正确,Go现在支持plugins(截至2021年6月仅适用于Linux和MacOS) 关于dynamic-动态加载包,我们在StackOverflow上找到一个类似的问题:

Golang 使用 DYNAMIC 键解析 json

这个问题在这里已经有了答案:Howtoparse/deserializedynamicJSON(4个回答)关闭3年前。我有一个json字符串如下:j:=`{"bvu62fu6dq":{"name":"john","age":23,"xyz":"weu33s"..........}}`我想从上面的json字符串中提取name和age的值。我查看了golang站点http://play.golang.org/p/YQgzP7KPp9上给出的这个示例但我的问题是顶层json中的关键是动态的。这意味着bvu62fu6dq是动态的。我创建了这样的结构:typeInfostruct{UniqueI

c++ dynamic_cast 错误处理

是否有任何与dynamic_cast错误处理相关的良好做法(除非在不必要时不使用它)?我想知道我应该如何处理它可以抛出的NULL和bad_cast。我应该检查两者吗?如果我捕捉到bad_cast或检测到NULL,我可能无论如何都无法恢复......现在,我使用assert来检查dynamic_cast是否返回非NULL值。你会在代码审查时接受这个解决方案吗? 最佳答案 如果dynamic_cast应该成功,最好使用boost::polymorphic_downcast代替,这有点像这样:assert(dynamic_cast(o)=

c++ dynamic_cast 错误处理

是否有任何与dynamic_cast错误处理相关的良好做法(除非在不必要时不使用它)?我想知道我应该如何处理它可以抛出的NULL和bad_cast。我应该检查两者吗?如果我捕捉到bad_cast或检测到NULL,我可能无论如何都无法恢复......现在,我使用assert来检查dynamic_cast是否返回非NULL值。你会在代码审查时接受这个解决方案吗? 最佳答案 如果dynamic_cast应该成功,最好使用boost::polymorphic_downcast代替,这有点像这样:assert(dynamic_cast(o)=

c++ - GNU GCC (g++) : Why does it generate multiple dtors?

开发环境:GNUGCC(g++)4.1.2当我试图研究如何在单元测试中增加“代码覆盖率——尤其是函数覆盖率”时,我发现某些类dtor似乎被生成了多次。请问你们中的一些人知道为什么吗?我使用以下代码尝试并观察了上面提到的内容。在“test.h”中classBaseClass{public:~BaseClass();voidsomeMethod();};classDerivedClass:publicBaseClass{public:virtual~DerivedClass();virtualvoidsomeMethod();};在“test.cpp”中#include#include"t

objective-c - @dynamic 在 Objective-C 中做了什么?

这个问题在这里已经有了答案:@synthesizevs@dynamic,whatarethedifferences?(8个回答)关闭8年前。Objective-C有一个称为@dynamic的功能。Google仅列出有关动态类型的结果。我很少在代码中看到这个,我不明白它的用途。谁能给我解释一下?谢谢。 最佳答案 @dynamic的意思是“我的类(class)将在运行时弄清楚如何对此做出响应。”使用对象的运行时机制来拦截它通常不会响应的消息。在CoreDatadb用于存储持久数据的情况下,NSManagedObject将这些转换为对-v

objective-c - @synthesize 与 @dynamic,有什么区别?

用@dynamic或@synthesize实现@property有什么区别? 最佳答案 @synthesize将为您的属性生成getter和setter方法。@dynamic只是告诉编译器getter和setter方法不是由类本身实现的,而是由其他地方实现的(比如父类(superclass)或将在运行时提供)。@dynamic的用途是例如使用NSManagedObject(CoreData)的子类,或者当您想要为未定义为socket的父类(superclass)定义的属性创建socket时。@dynamic也可用于委派实现访问器的责

c++ - 1.0 是 std::generate_canonical 的有效输出吗?

我一直认为随机数会介于0和1之间,没有1,即它们是来自半开区间[0,1)的数字。documentiononcppreference.comstd::generate_canonical证实了这一点。但是,当我运行以下程序时:#include#include#includeintmain(){std::mt19937rng;std::seed_seqsequence{0,1,2,3,4,5,6,7,8,9};rng.seed(sequence);rng.discard(12*629143+6);floatrandom=std::generate_canonical::digits>(rn