草庐IT

c++将具有父类型的任何子对象传递给方法

我试图将一个子对象传递给一个方法,但事先不知道对象类型,除了它将从父对象继承。我可以将类型设置为父类型,编译器很高兴,但是当这个过程发生时我丢失了子数据。classParent{public:Parent(intval);};classChild{public:Child(doublechildval,intparentval)};Child::Child(doublechildval,intparentval):Parent(parentval)ChildchildObj=newChild(cval,pval);intsomeOtherMethod(Parentpobj);someO

c++ - WS_CHILD 对话框上的 WS_TABSTOP

我正在使用简单的对话框。该对话框是从资源文件创建的。创建对话框WS_CHILD时,一切正常。我可以使用VK_TAB键轻松地在项目(编辑框和按钮)之间切换。但是当我尝试将对话框类型更改为WS_POPUP时,元素之间的切换变得不可能。焦点停留在第一个元素上,当我按下VK_TAB键时,我听到系统警报声(如“叮”)。有什么建议吗?编译器:gcc4.6.x资源示例:DIALOG_CLIENT_SETTINGSDIALOG0,0,156,132STYLEWS_CHILD|WS_VISIBLE|DS_CONTROL//TabkeystuckswhenchangetoWS_POPUPCAPTION"S

c++ - 如何初始化boost::process::child(boost process 0.5)?

我想存储boost::process的子进程,但不知道如何初始化它操作系统:win764位编译器:msvc200832位boost:1_55_0简化后的例子#include#include#include#includevoidtest_boost_system(){namespacebp=boost::process;namespacebpi=boost::process::initializers;//bp::childchild;//#1boost::system::error_codeec;bp::childchild_2=bp::execute(bpi::run_exe("l

c++ - 没有匹配的成员函数来调用 child.value

当我尝试编译下面的代码时出现错误:src/main.cpp:51:48:error:nomatchingmemberfunctionforcallto'child_value'std::cout我不明白的是我能够在上面的循环中使用它。我只能假设它希望我使用kv.second.child_value(kv.second);代替。但是我希望它在for(auto&eb:mapb){.返回的xml上运行这段代码。#include"pugi/pugixml.hpp"#include#include#includeintmain(){conststd::maptagMap{{"descriptio

c++ - TS Concepts 类型名约束

我正在尝试使用一个概念作为对子类的约束(由gcc使用gnu2a和fconcepts编译)来制作一个简单的模板继承示例。我希望下面的示例可以正常编译,但我无法让它工作:templateconceptboolHas_Type(){returnrequires{typenamestructure::type;};}templaterequiresHas_Type()structstructure{//usingtype=typenamesub::type;};structchild:structure{usingtype=child;};这个概念抛出一个错误,指出typenamestruct

c++ - 避免使用 "child"延迟 `operator<<` 对象构造

假设我有一个存储std::vector的容器对象多态child。structChild{Child(Parent&mParent){/*...*/}virtual~Child(){}};classParent{private:std::vector>children;templateauto&mkChild(TArgs&&...mArgs){//`static_assert`that`T`isderivedfrom`Child`...children.emplace_back(std::make_unique(std::forward(mArgs)...));return*childr

c++ - (c/c++) 试图强制 EOF 从父进程发送输入到子进程

我有一个非常简单的c/c++程序,它派生一个子进程来执行另一个程序,然后向该子程序发送一些数据,并等待响应。子程序从stdin读取并在继续之前等待EOF。我的问题是,子程序从管道写入接收到初始输入,但它从未看到EOF(即使我关闭了管道),所以它永远等待。我不确定为什么关闭管道并不意味着child的标准输入的EOF?代码如下:http://gist.github.com/621210 最佳答案 最常见的原因是您没有关闭管道的写入端,因此永远不会发送EOF。常见的例子是当你有如下代码时:intfds[2];pipe(fds);//ope

c++ - weak_ptr 和父子循环依赖

我目前有类似以下内容:classParent{//justasinglechild...forsakeofsimplicity//nootherclassholdsashared_ptrreferencetochildshared_ptr_child;System*getSystem(){...}}classChild{weak_ptr_parent;~Child{_parent.lock()->getSystem()->blah();}}Child析构函数总是崩溃,因为当~Child()运行时_parent总是过期。是否有针对这种怪现象的典型解决方案?简而言之,有没有办法在~Chil

C++ WIN API : When creating a child process using CreateProcess, 是否需要使输入参数具有全局生命周期?

我对C++和WindowsAPI都很陌生。今天突然想到是不是需要把CreateProcess的入参保持一个长生命周期。根据MSDN:BOOLWINAPICreateProcess(_In_opt_LPCTSTRlpApplicationName,_Inout_opt_LPTSTRlpCommandLine,_In_opt_LPSECURITY_ATTRIBUTESlpProcessAttributes,_In_opt_LPSECURITY_ATTRIBUTESlpThreadAttributes,_In_BOOLbInheritHandles,_In_DWORDdwCreationFl

c++ - 如何使用 win32 CreateProcess 函数等到 child 完成写入文件

你好我不是win32程序员,这对我来说是全新的。我喜欢从我的父win32应用程序打开进程(好的,这是我知道该怎么做)然后子进程写入文本文件并自行关闭。我如何在父应用程序中检测到子应用程序已完成对文本文件的写入。然后从父应用程序读取文本文件。这一切都在win32c++中谢谢 最佳答案 PROCESS_INFORMATION结构(这是CreateProcess的最后一个参数)包含成员hProcess。这是新进程的句柄,您可以使用WaitForSingleObject等待它。 关于c++-如何