草庐IT

add_const

全部标签

c++ - 如何跨指针保持 const 正确性?

我正在尝试对真正为const的类进行const操作-它不会更改该类指向的数据。例如:classNode{public:intval;};classV{public:Node*node;//whatisthechangethatisneededhere?voidconst_action()const{node->val=5;//errorwantedhere}voidaction(){node->val=5;//errorisnotwantedhere}}; 最佳答案 您可以使用模板在指针上强制执行const正确性,而无需更改类的含义

C++ 从 ‘const type* const’ 到 ‘type*’ 的无效转换

我有一个非常愚蠢的问题(我认为)。很长时间没有用C++编码,但我无法弄清楚这个问题。我有这个类:#includeclassNode{private:QList_adjacent;public:Node();boolisConnectedTo(Node*n)const;};isConnectedTo()的实现:boolNode::isConnectedTo(Node*n)const{return_adjacent.contains(n)&&n->_adjacent.contains(this);}我在return行中收到以下错误:Node.cpp:Inmemberfunction‘con

c++ - 使用 QT5_ADD_RESOURCES 和使用 CMake 进行多线程编译时损坏的资源 .cpp 文件

Qt5.0版本带来了一组更简单的命令来使用CMake构建Qt项目。参见http://qt-project.org/doc/qt-5/cmake-manual.html.需要使用命令QT5_ADD_RESOURCES包含项目的资源。如果我的资源文件名为Icon32.qrc,QT5_ADD_RESOURCES(RESOURCESIcon32.qrc)命令会自动将其转换为qrc_Icon32.cpp文件并定义一个${RESOURCES}变量,然后我可以将其包含到适当的目标中。这样做很完美,除了我在CDash中大约每20个构建出现一次编译错误。错误通常采用以下形式:/.../CMake/bui

parser.add_argument:错误:未识别的参数:true

我在Python2.7中有一个程序,该程序具有一系列代码:parser.add_argument('--skip_train',default=False,help='skiptraining',action='store_true')该代码告诉程序默认情况下进行培训。但是现在我想在没有培训的情况下实施它,因为培训已经完成。因此,我输入了提示:pythonmyprogame.py--skip_trainTrue但这给出了一个错误消息:error:unrecognizedarguments:True应该在提示命令中输入什么以实现该程序?看答案当您使用时action='store_true',您不

c++ - QObject::connect: 无法对 MyClass*const 类型的参数进行排队

我有这样的类(class):#includenamespacetaservices{classProcessHandle:publicQObject{Q_OBJECTpublic:ProcessHandle(constvoid*constprocessContextPointer,constQString&process_id="",QObject*parent=0);ProcessHandle();signals:voidprogress(constProcessHandle*constself,constintvalue);private:staticvoidregisterAsM

c++ - (&const_object) 可以评估为临时地址

我曾与一位程序员讨论过,其要点是foo中的以下断言可以通过或不通过,具体取决于编译器。#includeconstinti=0;voidfoo(constint&i){assert(&::i==&i);}intmain(){foo(i);}他告诉我,(&i)表达式可以计算为某个临时对象的地址。因为我有疑问,所以我在这里。如何将对temp的引用传递给函数,如果在函数中我可以检查并使用i和参数的地址做任何我想做的事情,并且必须保留预期的语义。?例如#includeconstinti=0;boolfunc(constint&i){return&::i==&i;}intmain(){consti

c++ - 一个 const std::function 包装一个非常量 operator()/mutable lambda

考虑以下示例:#include#includestructA{inti;voidoperator()(){std::coutconst&fun){fun();}intmain(){conststd::functionf{A{}};test(f);test(f);}在这里,conststd::function能够调用非constoperator().输出:12如果我提供一个mutablelambda,也会发生同样的情况,例如test([x=0]()mutable{++x;});这怎么可能?conststd::function可以包装可变仿函数是否正常? 最佳答

c++ - 编译器如何确保 const 成员函数中没有更改数据成员状态? (在 C++ 或 Java 中)

C++或Java编译器如何确保在const成员函数中没有任何成员变量状态发生变化(mutable是异常(exception))。编译器会把代码放在不可写的代码段之类的吗? 最佳答案 编译器不确定。不能,因为没有规定用说成员变量state不能的语言更改const成员函数。唯一的规则是你不能通过this指针改变状态(没有丢弃const)。 关于c++-编译器如何确保const成员函数中没有更改数据成员状态?(在C++或Java中),我们在StackOverflow上找到一个类似的问题:

c++ - 在以下 C++ 语句中放置 const 的好地方是什么

考虑以下类成员:std::vectorIncomingLanes_;上面的容器应该存放一些ifmy里的对象的指针。我不希望使用此变量作为参数的子程序能够修改Lane对象。同时,我不知道将不会阻止我填充容器的“const”关键字放在哪里。你能帮我解决这个问题吗?谢谢你和问候瓦赫德编辑:根据我到目前为止得到的答案(非常感谢他们所有人)假设这个样本:#include#includeusingnamespacestd;classLane{private:inta;public:Lane(inth):a(h){}voidsetA(inta_){a=a_;}voidprintLane(){std:

c++ - char* 到 const wchar_t * 转换

我需要将字符指针转换为w_char*以便使用ParseNetworkString()。我已经尝试自己寻找解决方案,虽然我找到了一种解决方案,但有一个问题阻止我使用它:b1naryatr0phy在另一个帖子中说:std::wstringname(L"SteveNash");constwchar_t*szName=name.c_str();这几乎对我有用,除了我不能直接传递字符串,因为它的值并不总是相同,这意味着我不能只把它放在引号中。如果我用函数调用替换参数,那么第一行会给我一个错误(例如:std::wstringname(LgetIpAddress());我试过std::wstring