草庐IT

缺一不可

全部标签

c++ - 不可分指针地址的减法

C中是否定义了不可分指针地址的减法?在C++中?这是一个例子:void*p=malloc(64);int*one=(int*)((char*)p);int*two=(int*)((char*)p+7);printf("%x%x%d%d\n",one,two,sizeof(int),two-one);Ideonelink.我得到了输出8a940088a9400f41,所以它似乎进行了除法并截断了余数。行为是否已定义? 最佳答案 根据5.7.6,这是未定义的行为:Whentwopointerstoelementsofthesamearr

c++ - 不可分指针地址的减法

C中是否定义了不可分指针地址的减法?在C++中?这是一个例子:void*p=malloc(64);int*one=(int*)((char*)p);int*two=(int*)((char*)p+7);printf("%x%x%d%d\n",one,two,sizeof(int),two-one);Ideonelink.我得到了输出8a940088a9400f41,所以它似乎进行了除法并截断了余数。行为是否已定义? 最佳答案 根据5.7.6,这是未定义的行为:Whentwopointerstoelementsofthesamearr

c++ - 一些 const char * 在编译时不可用?

假设我们有一个模板函数,其非类型参数为constchar*,如下所示:templatevoidprint(){std::cout使用这个模板不会有问题,因为MESSAGE的日志可以在编译时推导出来,所以下面的用法是合法的:namespace{charnamespace_message[]="AnonymousNamespaceMessage";constexprcharnamespace_constexpr_message[]="AnonymousNamespaceConstexprMessage";}charmessage[]="Message";constexprcharconst

c++ - 一些 const char * 在编译时不可用?

假设我们有一个模板函数,其非类型参数为constchar*,如下所示:templatevoidprint(){std::cout使用这个模板不会有问题,因为MESSAGE的日志可以在编译时推导出来,所以下面的用法是合法的:namespace{charnamespace_message[]="AnonymousNamespaceMessage";constexprcharnamespace_constexpr_message[]="AnonymousNamespaceConstexprMessage";}charmessage[]="Message";constexprcharconst

c++ - 如何使 QLineEdit 在 Windows 中不可编辑

我正在使用Qt5.2,我想让QLineEdit不可编辑。问题在于,它看起来不像。使用setReadOnly(true)时,它保持白色背景,看起来仍然可以编辑。如果我禁用它,它会变成灰色,文本也会变成浅灰色。问题是,无法从中复制文本,处于禁用状态。那么我怎样才能使QLineEdit正确地不可编辑,并使它看起来像它。在Windows中,这样的控件通常是灰色的,但文本保持黑色。当然我可以手动设置样式,但这意味着它是硬编码的,在其他平台上可能看起来不对。 最佳答案 将行编辑设为只读后,您可以将背景和文本颜色设置为您喜欢的任何颜色:ui->l

c++ - 如何使 QLineEdit 在 Windows 中不可编辑

我正在使用Qt5.2,我想让QLineEdit不可编辑。问题在于,它看起来不像。使用setReadOnly(true)时,它保持白色背景,看起来仍然可以编辑。如果我禁用它,它会变成灰色,文本也会变成浅灰色。问题是,无法从中复制文本,处于禁用状态。那么我怎样才能使QLineEdit正确地不可编辑,并使它看起来像它。在Windows中,这样的控件通常是灰色的,但文本保持黑色。当然我可以手动设置样式,但这意味着它是硬编码的,在其他平台上可能看起来不对。 最佳答案 将行编辑设为只读后,您可以将背景和文本颜色设置为您喜欢的任何颜色:ui->l

c++ - 为什么 std::lock_guard 不可移动?

为什么std::lock_guard不能移动,它会让代码变得更好:autolocked=lock_guard(mutex);而不是std::lock_guardlocked(mutex);创建自己的版本有什么问题吗,比如:templateclasslock_guard_{T*Mutex_;lock_guard_(constlock_guard_&)=delete;lock_guard_&operator=(constlock_guard_&)=delete;public:lock_guard_(T&mutex):Mutex_(&mutex){Mutex_->lock();}~lock_

c++ - 为什么 std::lock_guard 不可移动?

为什么std::lock_guard不能移动,它会让代码变得更好:autolocked=lock_guard(mutex);而不是std::lock_guardlocked(mutex);创建自己的版本有什么问题吗,比如:templateclasslock_guard_{T*Mutex_;lock_guard_(constlock_guard_&)=delete;lock_guard_&operator=(constlock_guard_&)=delete;public:lock_guard_(T&mutex):Mutex_(&mutex){Mutex_->lock();}~lock_

c++ - C++ 中的继承和模板 - 为什么继承的成员不可见?

当一个模板从另一个模板公开继承时,基本的公共(public)方法不应该是可访问的吗?templateclassTest{public:Test(){}intMyMethod1(){returna;}};templateclassAnother:publicTest{public:Another(){}voidMyMethod2(){MyMethod1();}};intmain(){Anothera;a.MyMethod1();a.MyMethod2();}好吧,GCC在这方面废话了……我一定遗漏了一些完全明显的东西(大脑融化)。帮忙? 最佳答案

c++ - C++ 中的继承和模板 - 为什么继承的成员不可见?

当一个模板从另一个模板公开继承时,基本的公共(public)方法不应该是可访问的吗?templateclassTest{public:Test(){}intMyMethod1(){returna;}};templateclassAnother:publicTest{public:Another(){}voidMyMethod2(){MyMethod1();}};intmain(){Anothera;a.MyMethod1();a.MyMethod2();}好吧,GCC在这方面废话了……我一定遗漏了一些完全明显的东西(大脑融化)。帮忙? 最佳答案