gpt4 book ai didi

c++ - boost python optional 引发错误

转载 作者:太空狗 更新时间:2023-10-29 23:06:03 24 4
gpt4 key购买 nike

我有以下代码:

//test.cpp
#include <Physical_file.h>
#include <boost\python.hpp>

using namespace boost::python;
using namespace FMS_Physical;

BOOST_PYTHON_MODULE(python_bridge)
{
class_<Physical_file, boost::noncopyable>("pf")
.def(init<const string&, optional<int, const string&>>())
;
}

//Physical_file.h
#include <fstream>
#include "tools.h"
using namespace std;

namespace FMS_Physical
{
class Physical_file
{
public:
fstream filefl;
string workingDir;
string fileName;
int fileSize;
block currBlock;
block FHBuffer;
bool opened;
string openMode;

/************
functions
************/

Physical_file(void);
Physical_file(const string &FileName, int FileSize,const string &Dir = getCurrentPath());
Physical_file(const string &FileName, const string &Type, const string &Dir = getCurrentPath());

~Physical_file(void);
};
}

还有一些代码,我认为与问题无关。

当我尝试编译代码时,出现以下错误:

Error   5   error C2664: 'FMS_Physical::Physical_file::Physical_file(const FMS_Physical::Physical_file &)' : cannot convert parameter 1 from 'const std::string' to 'const FMS_Physical::Physical_file &'   

当我从构造函数(在 test.cpp 中)的定义中删除 optional 时,错误消失了,但我没有得到可选参数。

我正在使用 VS2010、python27 和 c++ boost 库进行编译。

任何人都可以解释为什么我会收到此错误以及我该如何解决它?

编辑
我尝试使用以下行公开第三个构造函数:

.def(init<const string&, const string &, optional<const string &>>())

这没有导致任何错误。

最佳答案

您忘记为 FileSize 设置默认值.要使此声明生效:init<const string&, optional<int, const string&>>你需要一个只能用 const string& 调用的构造函数范围。你现在没有这样的,这是编译器的确切提示。

关于c++ - boost python optional 引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17043313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com