在 c++11 中,构造函数可以转发到初始化列表中的另一个构造函数。
可以像这个问题一样在初始化列表中调用函数
在构造函数委托中调用函数也可以吗?
我试过这样的代码:
#include <iostream>
#include <string>
#include <yaml-cpp/yaml.h>
using namespace std;
YAML::Node ParseFromFile(const string& filepath) {
YAML::Node yaml;
try {
return YAML::LoadFile(filepath);
} catch(const YAML::BadFile& e) {
cout << "error";
}
}
class A {
public:
A(YAML::Node yaml) {
cout << "Got" << endl;
}
A(const string& filepath) : A(ParseFromFile(filepath)) {}
};
int main(int argc, char** argv) {
A a(string(argv[1]));
YAML::Node yaml = ParseFromFile(string(argv[1]));
A b(yaml);
return 0;
}
对于上面的代码,只需传递一个空文件给它,它只会在b的初始化过程中打印一个“Got”。
==================================================== ======================
用 argv[1] 替换 string(argv[1]) 使它工作,任何想法为什么?