TL;我的代码的DR如下:
mappath
代码在std::cout
存在时有效(几乎没有,因为我发现Boost几乎在每个函数中都是segfaulting)。
但是,当它没有时,它会抛出一条例外消息" Bad address"。
当我通过"/home/myusername/.testfolder/huni/ENTER YOUR TEXT HERE"
打印mappath
时,它会返回:
mappath
哪个是正确的。
请注意,当我尝试在 else语句中打印is_directory
时,会出现段错误。
我在exists
或if
中推断出某些内容与EntityType: EntityClass & EntityCreatorInitializable
混淆,因为在<{em> EntityType: EntityCreatorInitializable
之前打印时没有错误言。
答案 0 :(得分:0)
我为自己写了一个MCVE。当路径不存在时,提升抛出
terminate called after throwing an instance of 'boost::filesystem::filesystem_error'
what(): boost::filesystem::create_directory: No such file or directory
Aborted (core dumped)
因为您的程序首先检查路径是否是目录,然后检查路径是否存在(正确)。
当路径存在并且它是目录时,程序在没有输出的情况下运行并且什么都不做(正确)。
当路径存在并且是文件时,boost抛出
terminate called after throwing an instance of 'boost::filesystem::filesystem_error'
what(): boost::filesystem::create_directory: File exists
Aborted (core dumped)
因为它无法创建目录(正确)。
因此,您的代码段会执行它应该执行的操作。也许您应该更改if
声明中的顺序并添加支票给else
:
#include <boost/filesystem.hpp>
#include <iostream>
class server {
public:
server(boost::filesystem::path mappath) : mappath(mappath) {
if(boost::filesystem::exists(mappath) && boost::filesystem::is_directory(mappath)) {
// Do some stuff here
} else if (!boost::filesystem::exists(mappath)) {
boost::filesystem::create_directory(mappath);
}
}
private:
boost::filesystem::path mappath;
};
int main() {
server s("/path/test");
return 0;
}
现在程序检查路径是否存在。如果路径存在,程序将检查路径是否为目录。如果路径不存在,则创建目录。
答案 1 :(得分:0)
结果Bad address
是特定于POSIX的错误。
我无法在mappath
声明的else子句中打印if
的原因是,is_directory
正在弄乱参考文献。
它实际上在做什么我无法弄清楚。
所以,我已经从Boost切换到实际工作的东西。