草庐IT

const-cast

全部标签

c++ - 从类指针到 long 的 reinterpret_cast

我用这些行在Win64上编写了一个C++应用程序:Window*wnd=0;longl=reinterpret_cast(wnd);编译器在最后一行显示以下错误:error:castfrom'window::Window*'to'longint'losesprecision[-fpermissive]我使用此值将其放入SetWindowLong(WindowsAPI)函数。我无法理解这个错误。我正在使用MinGW-w64(rubenbuild)。 最佳答案 阅读我的originalcomment.问题在于sizeof(window:

c++ - Windows C++ : LPCTSTR vs const TCHAR

在我的应用程序中,我在代码顶部附近声明了一个字符串变量,用于定义我在调用RegisterClassEx、CreateWindowEx等时使用的窗口类的名称。现在,我知道LPCTSTR是一个typedef并最终会跟随到一个TCHAR(好吧,一个CHAR或WCHAR,取决于是否定义了UNICODE),但我想知道使用这个是否会更好:staticLPCTSTRszWindowClass=TEXT("MyApp");或者这个:staticconstTCHARszWindowClass[]=TEXT("MyApp");我个人更喜欢使用来自JavaScript、PHP、C#背景的LPCTSTR,我从

windows - 为什么此 QString 到 const char* 的转换会在 Windows 上生成 Debian 标识符?

我试图在Qt中包装libssh2,并具有以下代码:constchar*username=inUsername.toLocal8Bit().data();constchar*password=inPass.toLocal8Bit().data();问题是用户名和密码没有连接到系统。为什么?因为根据调试器,username"5.1p1Debian-6ubuntu2"password"5.1p1Debian-6ubuntu2"这些不是我为用户名或密码提供的值。我试过toAscii、toLatin1和附加(或不附加).data()。尽管如此,我还是得到了这些值,而不是预期值。我在Windows

c++ - 错误 C2446 : == : no conversion from const char * to TCHAR *

我在下面定义了一个TCHAR:TCHARszProcessName[MAX_PATH]=TEXT("");我想比较如下:if(szProcessName=="NDSClient.exe"){}但是我得到了错误:errorC2446:==:noconversionfromconstchar*toTCHAR*errorC2440:'==':cannotconvertfrom'constchar[14]'to'TCHAR[260]' 最佳答案 "NDSClient.exe"是Windows上的constchar*字符串。如果你想让它成为一

c - 为什么微软将类型CHAR定义为char,将宏CONST定义为const?

这个问题在这里已经有了答案:WindowsDataTypes...whysoredundant/undescriptive?(3个答案)关闭8年前。作为C初学者,翻看MSDN'sWindowsDataTypes,我看到有很多定义的类型似乎是多余的。例如使用typedef:CHAR--typedefcharCHAR;FLOAT--typedeffloatFLOAT;也作为对象宏:CONST--#defineCONST常量据我了解,typedef和#define通常用于阐明程序员的意图:#defineBOOLint和/或缩短类型声明(想不出一个好的例子):typedefunsignedch

c# - 为什么resharper建议const,静态操作?

我想知道为什么resharper建议在非静态类中使用静态方法?是为了保存实例的创建吗?这是性能问题吗?另外,为什么它建议“const”一些参数?这是性能问题吗?我很想得到一些解释 最佳答案 当编译器遇到静态方法时,它会发出call指令,但当它遇到实例方法时,它会发出callvirt指令。现在,callvirt指令会在调用之前检查对象是否为空。所以它会带来性能损失。但它有助于使方法调用多态。因此,如果该方法与类的任何属性的状态更改无关,建议将该方法设为静态,因为它可以提高性能关于const的使用,它是值的编译时关联而不是运行时关联。所

c# - 来自 C 背景,在 C# 中实现 const 引用数据表/结构的好方法是什么?

我将给出一个我熟悉的使用C实现的简单示例。我认为重点在于如何使用数据,而不是我在示例中使用它所做的事情:)typedefstruct{constchar*description;uint32_tcolour_id;uint32_tquantity;}my_data_t;constmy_data_tref_data[]={{"BrownBear",0x88,10},{"BlueHorse",0x666,42},{"PurpleCat",123456,50},};voidshow_animals(void){my_data_t*ptr;ptr=&ref_data[2];console_wr

c# - IEnumerable.Cast() 与 IEnumerable.Select() 中的转换

假设我有一个IEnumerable我希望将它们转换成它们的ASCII等效字符。对于单个整数,它只是(char)i,所以总有collection.Select(i=>(char)i),但我认为使用collection.Cast()会更干净一些.谁能解释为什么我得到一个InvalidCastException当我使用collection.Cast()但不是collection.Select(i=>(char)i)?编辑:有趣的是,当我调用collection.OfType()时我得到一个空集。 最佳答案 Cast和OfType方法只执行

c# - 帮助我理解 "LINQ to Entities only supports casting Entity Data Model primitive types"

我有一个工作单元和一个使用EF4和POCO的存储库。由于EF在可以Skip()和Take()之前需要一个有序集,因此我添加了以下单元测试(没有模拟)只是为了提取一条记录以查看它是否有效。varmyList=UOW.EntityRepo.Get(orderbyLambda:p=>p.ID,page:1,pageSize:1);这导致表达式orderbyLambda={p=>Convert(p.ID)}和枚举期间的错误。ID是tinyint(Int16/短)那么为什么按ID排序失败呢?有关错误的更多信息Unabletocastthetype'System.Int16'totype'Syst

c# - 等同于 C# 中 C++ 的 reinterpret_cast

我想知道C++的reinterpret_cast是什么?在C#中!?这是我的示例:classBase{protectedintcounter=0;}classFoo:Base{publicintCounter{get{returncounter;}}}Baseb=newBase();Foof=basFoo;//fwillbenull我不反对为什么f将为空,因为它应该是。但如果是C++,我可以写出Foof=reinterpret_cast(b);得到我想要的。我可以做些什么来在C#中实现相同的目标?附言。我假设Base和Foo在数据方面是一致的。[更新]这是一个简单的场景,其中一个rei