C++ 如何初始化boost::process::child(boostprocess0.5)?
我想存储boost::process的子级,但不知道如何初始化它 操作系统:win7 64位 编译器:msvc2008 32位 增压:1_55_0 简化后的示例C++ 如何初始化boost::process::child(boostprocess0.5)?,c++,boost,C++,Boost,我想存储boost::process的子级,但不知道如何初始化它 操作系统:win7 64位 编译器:msvc2008 32位 增压:1_55_0 简化后的示例 #include <boost/process/initializers.hpp> #include <boost/process.hpp> #include <boost/system/system_error.hpp> #include <iostream> void test_
#include <boost/process/initializers.hpp>
#include <boost/process.hpp>
#include <boost/system/system_error.hpp>
#include <iostream>
void test_boost_system()
{
namespace bp = boost::process;
namespace bpi = boost::process::initializers;
//bp::child child; //#1
boost::system::error_code ec;
bp::child child_2 = bp::execute(bpi::run_exe("ldapInterface.exe"), bpi::set_on_error(ec));
if(ec.value() != 0){
std::cout<<ec.message()<<std::endl;
}else{
std::cout<<"success"<<std::endl;
}
}
错误消息:
错误C2512:“boost::process::windows::child”:没有合适的默认构造函数可用使用允许延迟初始化的包装器 例如
class进程管理器
{
公众:
~process_manager(){if(child_)bp::terminate(*child_);}
void open_进程(标准::字符串常量和进程)
{
child_u=bp::execute(bpi::run_exe(process));//编译错误
}
私人:
boost::可选的子对象;
};
也许遵循C++的哲学,你应该有一个构造器来初始化<代码>子> ,<代码> Pube:PurryStMulk管理器(ARGS…):CalthyIf(ARGS..){} /Cuth>。还有一个空的析构函数?
namespace bp = boost::process;
namespace bpi = boost::process::initializers;
class process_manager
{
public:
~process_manager() { bp::terminate(child_); }
void open_process(std::string const &process)
{
child_ = bp::execute(bpi::run_exe(process)); //compile error
}
private:
bp::child child_;
};
class process_manager
{
public:
~process_manager() { if (child_) bp::terminate(*child_); }
void open_process(std::string const &process)
{
child_ = bp::execute(bpi::run_exe(process)); //compile error
}
private:
boost::optional<bp::child> child_;
};