草庐IT

void_type

全部标签

c++ - 编译错误 : base operand of ‘->’ has non-pointer type ‘Token’

我在尝试编译我的C++代码时遇到标题中提到的错误。我无法理解我在这里做错了什么。编译器在我执行booloperator==(Token)函数时出现问题。我认为这是使运算符(operator)重载的方法。关于为什么编译器不喜欢我提到的任何线索this->terminal还是this->lexeme?classToken{public:tokenTypeterminal;std::stringlexeme;Token*next;Token();booloperator==(Token&t);private:intlexemelength,line,column;};boolToken::o

c++ - knnMatchImpl 中的断言失败 (queryDescriptors.type() == trainDescCollection[0].type()),

当使用BOWImgDescriptorExtractor和DescriptorExtractor作为SIFT和DescriptorMatcher作为ButeForce我我收到错误信息OpenCVError:Assertionfailed(queryDescriptors.type()==trainDescCollection[0].type())inknnMatchImpl,我有什么错误。当我尝试计算时例如。bowide->compute(img,keypoints,response_hist); 最佳答案 我在使用带有BFMatc

c++ - 通过采用 void * 的 C 接口(interface)传递 shared_ptr

我有一个使用SDL的C++项目,特别是SDL事件。我想将事件系统用于传入的网络消息,就像它用于UI事件一样。我可以定义一个新的事件类型并附加一些任意数据(参见thisexample)。如果我使用普通指针,这就是我会做的:Uint32message_event_type=SDL_RegisterEvents(1);/*Inthemaineventloop*/while(SDL_Poll(&evt)){if(evt.type==message_event_type){Message*msg=evt.user.data1;handle_message(msg);}}/*Networkingc

c++ - "Use of undefined type"带有 unique_ptr 以转发声明的类和默认移动构造函数/赋值

在下面的代码中,是避免编译错误并在A.cpp中手动包含B.h实现移动构造函数/赋值的唯一方法吗?//A.h#includeclassB;//implementationsomewhereinB.h/B.cppclassA{public:A()=default;~A()=default;A(constA&)=delete;A&operator=(constA&)=delete;A(A&&)=default;A&operator=(A&&)=default;private:std::unique_ptrm_b;};VisualStudio2015给出“错误C2027:使用未定义类型”,因为

c++ - 如何比较 time_t 和 std::filesystem::file_time_type

我正在将一些代码从boost::filesystem转换到std::filesystem。以前使用的代码boost::filesystem::last_write_time()它返回一个time_t,因此直接与我已经持有的time_t对象进行比较是微不足道的。顺便说一句,我持有的这个time_t是从很久以前保存的文件内容中读取的,所以我坚持使用这种“自unix纪元以来的时间”类型。std::filesystem::last_write_time返回std::filesystem::file_time_type.是否有可移植的方法将file_time_type转换为time_t,或者以其

c++ - 将指向数据成员的指针转换为 void *

我知道我可以获得指向类或结构的数据成员的指针,但以下代码的最后一行无法编译:structabc{inta;intb;charc;};intmain(){charabc::*ptt1=&abc::c;void*another_ptr=(void*)ptt1;}为什么我不能将ptt1转换为another_ptr?我们正在谈论指针,所以一个指针应该与另一个指针具有相似的维度(尽管在概念上不同)? 最佳答案 指向非静态类成员类型的指针与对象指针类型不同;他们的行为非常不同。事实上,您甚至不能取消引用指向带有*的成员的指针。要通过指向成员的指

c++ - 从 ‘void’ 到非标量类型的转换‘std::pair<std::basic_string<char, std::char_traits<char>

我在电子表格obj中有一堆对:std::stack>undoStack;我正在尝试弹出堆栈并将其分配给另一对:std::pairchange=spreadsheets.at(i).undoStack.pop();我收到这个错误:error:conversionfrom‘void’tonon-scalartype‘std::pair,std::allocator>,std::basic_string,std::allocator>>’requested这里出了什么问题? 最佳答案 stack::pop()返回void但您正试图将其分配

c++ - 使用 `void_t` 检查类是否具有具有特定签名的方法

此刻,我是usingthismethodtocheckifaclasshasamethodwithaspecificsignature.参加后WalterE.Brown'smetaprogrammingCppCon2014talk,我开始怀疑void_t可以在这种特殊情况下使用,使代码更清晰、更具可读性。但是我在考虑void_t方面遇到了麻烦-到目前为止我明白void_t可以帮助我在编译时确定表达式是否有效。例子:templatestructhas_type_data_member:false_type{};templatestructhas_type_data_member>:tru

c++ - 为什么我的结果数据返回为 void* 损坏?

我在一个拥有庞大遗留代码库的项目中工作,并且一直在尝试重新设计其中的一部分以摆脱旧的C风格代码。我遇到了一个问题,准备了一个简短的程序来解释。我使用的旧接口(interface)需要我将指向结果数据的指针作为void*传递,我想避免必须更改它。示例中的unique_ptr只是为了演示,在我的真实代码库中,处理数据的所有内容都使用智能指针来管理内存。我的问题是,结果数据被破坏了(见最后的输出行/最后一次调用printPayload);最后一切都是0,但转换为void*并返回似乎不是问题,如第二和第三输出行所示。这是一个与临时相关的问题吗?我不明白...我希望这类问题对你们中的一些人有帮助

c++ - 错误 : Field has an incomplete type

quaternion.h:15:错误:字段“v”的类型不完整嗨!我陷入了一个我似乎无法解决的错误。下面是我的代码:#ifndefQUATERNION_H#defineQUATERNION_H#include"vec3.h"classVec3;classQuaternion{public:Quaternion(Vec3v);Quaternion(doublew,Vec3v);Vec3v;我的Vec.h看起来像这样:#ifndefVEC3_H#defineVEC3_H#include"point.h"#include"quaternion.h"#includeclassQuaternion