C++ 为什么类成员变量定义的顺序很重要?
我的代码运行了很长时间,最近,我修改了这个类中的成员变量顺序 我发现它在我的电脑里崩溃了 这是我代码的一部分:(对不起,我不能把所有代码都粘贴在这里,它太大了,会很混乱) 头文件C++ 为什么类成员变量定义的顺序很重要?,c++,C++,我的代码运行了很长时间,最近,我修改了这个类中的成员变量顺序 我发现它在我的电脑里崩溃了 这是我代码的一部分:(对不起,我不能把所有代码都粘贴在这里,它太大了,会很混乱) 头文件 #pragma once #include <unordered_map> #include <vector> #include <libconfig.h++> #include "struct/struct_util.hpp" #include "i
#pragma once
#include <unordered_map>
#include <vector>
#include <libconfig.h++>
#include "struct/struct_util.hpp"
#include "infra/ipc_util.hpp"
#include "util/order_manager.h"
#include "util/universe.h"
namespace V1 {
namespace base {
class BaseAlpha {
public:
BaseAlpha(const libconfig::Config& cfg, const std::string& id);
BaseAlpha(const BaseAlpha&) = delete;
BaseAlpha& operator=(const BaseAlpha&) = delete;
virtual ~BaseAlpha();
protected:
util::trade_util::OrderManager *om_;
util::trade_util::UM& u_;
const libconfig::Config& cfg_;
bool is_live_; // !!!!!!please notice here, if i move is_live_ forward to om_, it will be crashed
private:
virtual void finalize(int32_t date);
};
}
};
为什么可变顺序的顺序会使它崩溃?您能帮忙吗?因为初始化顺序是由该顺序定义的,而不是由构造函数中初始值设定项列表中的顺序定义的。如果您认为重复项不适用,请更具体一些,并显示最小可复制的示例。
#include "./base_alpha.h"
V1::base::BaseAlpha::BaseAlpha(const libconfig::Config& cfg, const std::string& id)
: om_(new util::trade_util::OrderManager(id, cfg.exists("is_live") ? bool(cfg.lookup("is_live")) : true)),
u_(util::trade_util::UM::Inst()),
cfg_(cfg) {
// is_live_ = cfg_.exists("is_live") ? bool(cfg_.lookup("is_live")) : true;
}