type-safety相关内容
为了实现C中枚举的类型安全性是有问题的,因为它们本质上只是整数。枚举常数实际上是按照标准定义为 int 的类型。 要实现一些类型安全我用这样的指针来做点: typedef枚举 { BLUE, RED } color_t; void color_assign(color_t * var,color_t val) { * var = val; }
..
常见的知识是C ++中内置的枚举不是类型安全的。 我想知道哪些类实现类型安全枚举在那里使用 我自己使用以下“自行车”,但它有点冗长和限制: typesafeenum.h: struct TypesafeEnum { //结构: public: TypesafeEnum():id(next_id ++),name(“”){} TypesafeEnum(const st
..
我想知道是否可以设计一个类型安全的单链表结构,这样就不可能从尾部节点请求下一个节点。 同时,客户端需要能够通过列表通过遍历(递归或以其他方式)node.getChild()但是在编译时(至少用人工写的显式类型检查)才能防止它们超过尾部。 我想知道: 这种类型的问题? 有面向对象或其他方法有助于避免显式的运行时类型检查? 实现语言并不重要,但这里是我正在考虑的Java示例。
..
这是这两个问题的分支: 1 , 2 。 我想在Java中实现类型安全的数据结构,以防止无意义的操作。例如,如果编译器知道我有一个空堆栈的实例,它不应该允许我在空堆栈上调用pop。 举个例子,我将在Java中实现这样一个(通用的)堆栈? 解决方案 请参见下面的Java实现基于.net代码从 stakx的问题。 如果客户端尝试弹出太远,编译器将发出未定义的方法错误。例如,发出
..
当我希望将控件绑定到对象的属性时,我必须以属性的形式提供字符串的名称。这不是很好,因为: 如果属性被删除或 重命名,我没有得到一个编译器 警告。 如果使用重构工具重命名财产 ,则 可能会更新 。 如果财产 的类型错误,我直到 运行时才会收到错误,例如将一个整数绑定到 a日期选择器。 有没有一个设计模式,使用数据绑定? (这是WinForm,Asp.net和WP
..
我很想知道为什么会发生这种情况。请阅读下面的代码示例和在每个部分下面的注释中发出的相应的IL: 使用System; 类程序 { static void Main() { Object o = new Object(); o.GetType(); // L_0001:newobj instance void [mscorlib] System.Object ::。ct
..
我想在Java中平铺任何深度嵌套的集合/结构某种类型T的元素,最好使用 只有实时视图而不是复制的集合; 不仅处理集合,而且还包括迭代器,任意维数T的数组,Iterable和所有这些结构任意混合和嵌套; 静态类型安全。 这? Guava 似乎只处理一个嵌套级别,即 Collection> --flatten - > T> 。 lambdaj
..
我期望从编译时间方面以及从运行时方面来看, .getClass()不会提供正确的问题 但是我一定错了。 public class _GetClassGenerics2 { static class MyClass { } public static void main(String [] args){ MyClass myInstance = new MyClass
..
package main func test(){ print(“In Test”) } func main(){ a:=“test”$ b $您可能会收到一封电子邮件,您可能会收到一封电子邮件给您,您可能会收到一封电子邮件,更好的答案,如果你说你想要实现的,因为反射通常不是最好的方式。但如果函数是类型上的方法(反映将有所帮助/ net / rpc /“> net / rpc
..
我刚刚开始将我的头围绕在C中的函数指针。为了理解函数指针的转换是如何工作的,我写了以下程序。它基本上创建一个函数指针指向一个函数,它接受一个参数,将它转换为具有三个参数的函数指针,并调用该函数,提供三个参数。我很好奇会发生什么: #include int square(int val){ return val * val; } void printi
..
? 实际上检查已擦除类型List 当我试图将一个对象转换为类型的通用信息时,如下面的代码: Object object = getMyList(); List list =(List)object; 解决方案 此警告存在,因为Java实际上并不存储类型运行时在使用泛型的对象中的信息。因此,如果 object 实际上是 Lis
..
我尝试将一个对象投射到我的Action类,但会产生一个警告: 类型安全:从对象到动作 Action action = null; try { Object o = c.newInstance(); if(o instanceof Action){ action =(Action
..
我最近做了一个巨大的重构,我改变了很多我的代码返回布尔值,而不是一个明确的返回代码。为了帮助这种重构,我决定尽可能地依靠编译器,让它告诉我我的代码需要改变的地方。我这样做是通过引入以下类(查看这里的低层如何工作) : /// /// Typesafe布尔类别 /// class TypesafeBool { private: bool m_bValue; struct
..
与此问题联合使用。我有麻烦提出一个良好的类型安全的解决方案,以下看似基本的问题。我有一个类music_playlist,它有一个应该播放的歌曲的列表。看起来很简单的权利,只是做一个std ::列表中的所有歌曲,并使其可供用户。然而,出于必要性,音频解码和音频渲染发生在单独的线程上。所以列表需要互斥保护。通常情况下,互斥体被其他程序员使用我的库忘记了。这显然导致了“奇怪”的问题。 所以一开始我
..
我有一个 T(& values)[N] 的指针 T * pValues $ c> 在此SO回答中 http://stackoverflow.com/ a / 2634994/239916 ,建议的方式是 T(& values) = * static_cast(static_cast(pValues)); 我关心的问题是。在他的示
..
我对 static_cast 有不同的感觉,因为它是最安全的C ++强制转换,但同时允许安全和不安全的转换,因此您必须知道上下文来说,如果它实际上是安全的或可能导致UB(例如,当转换到子类)。 那么为什么没有一个更安全的显式转换?这里是一个例子,它可能是有用的。在COM中,他们必须返回接口指针 void ** ppv ,因此“必须”显式处理 * ppv =(IInterface *)
..
我想在我的C ++程序中使用类似typedef来提高类型安全性。 例如,假设我有两个函数 void function1(unsigned idOfType1); void function2(unsigned idOfType2); 那么我可以错误地将idOfType2传递给function1,反之亦然。我想编译器给我一个错误在这种情况下。我知道我可以包装这些u
..
可能重复: b $ b 我们(作为一个社群)有足够的经验来确定汽车何时和/或是否被滥用? 我是什么真正寻找 何时使用自动 避免 在80%的情况下可以快速遵循的简单的经验法则。 作为上下文,这个问题是由我的回应引发的这里 解决方案 我认为当类型在在您的项目中工作(或将工作)的程序员,则可以使用 auto ,例如以下代码: // good:auto这
..
C ++ 0x有模板别名(有时称为模板typedef)。请参见此处。 C ++的当前规格没有。 你喜欢做什么工作?容器对象或宏? 你觉得它值得吗? 解决方案 工作?容器对象或宏? 规范化的方式是使用元功能,例如: template struct my_string_map { typedef std :: map
..
是否有这种模式的名称? 让我们假设你想创建一个采用可变数量的参数的方法,每个都必须是一个组固定的类型(以任意顺序或组合),以及一些这些类型的,你无法控制的。一种常见的方法就是让你的方法带Object类型的参数,并在运行时验证类型: 无效的MyMethod(PARAMS [对象]参数) { 的foreach(在args对象ARG) { 如果(arg是SOMETYPE) DoSome
..