C++;以boost::filesystem::path作为参数的构造函数调用-未发生任何事件 我有一个困扰我的问题,我的C++理解中缺少了一些东西。
我试图用boost::filesystem::path(它本身是由一个基本的_字符串构造的)来构造一个对象,我想我可以通过在构造对象的同一行上构造boost路径来保存一行代码 请参见下面的示例: 我不明白的一件事是,虽然它不起作用,但我也没有出错。i、 似乎什么也没发生。为什么会这样C++;以boost::filesystem::path作为参数的构造函数调用-未发生任何事件 我有一个困扰我的问题,我的C++理解中缺少了一些东西。,c++,constructor,C++,Constructor,我试图用boost::filesystem::path(它本身是由一个基本的_字符串构造的)来构造一个对象,我想我可以通过在构造对象的同一行上构造boost路径来保存一行代码 请参见下面的示例: 我不明白的一件事是,虽然它不起作用,但我也没有出错。i、 似乎什么也没发生。为什么会这样 class Test { public: Test(boost::filesystem::path in) { std::cout << "Succesful construc
class Test {
public:
Test(boost::filesystem::path in) {
std::cout << "Succesful construction" << std::endl;
}
};
int main() {
std::string str("asdf.txt");
boost::filesystem::path p(str);
Test test1(boost::filesystem::path(str)); // Nothing at all happens, but no error
Test test2(p); // "Succesful construction"
}
类测试{
公众:
测试(boost::filesystem::path-in){
std::cout这是C++所谓的“最麻烦的解析”。您遇到的问题是:
Test test1(boost::filesystem::path(str));
是名为test1
的函数的声明,该函数返回一个Test
,并接受一个名为str
的boost::filesystem::path
类型的参数。str
周围的括号被解析为多余,因此该行被解释为等效于:
Test test1(boost::filesystem::path str);
如果使用C++11进行编译,可以将外圆括号替换为大括号:
Test test1{boost::filesystem::path(str)};
在C++11之前,您可以使用一组额外的括号:
Test test1((boost::filesystem::path(str)));
这就是C++所谓的“最麻烦的解析”。您遇到的问题是:
Test test1(boost::filesystem::path(str));
是名为test1
的函数的声明,该函数返回一个Test
,并接受一个名为str
的boost::filesystem::path
类型的参数。str
周围的括号被解析为多余,因此该行被解释为等效于:
Test test1(boost::filesystem::path str);
如果使用C++11进行编译,可以将外圆括号替换为大括号:
Test test1{boost::filesystem::path(str)};
在C++11之前,您可以使用一组额外的括号:
Test test1((boost::filesystem::path(str)));
带警告编译:带警告编译: