这个警告是由于C++编译器检测到你的代码中存在类成员变量的初始化顺序与它们在类定义中声明的顺序不一致。为了消除这个警告,你可以按照声明的顺序初始化类成员变量。
根据你提供的代码片段,问题出现在 SessionStateHolder
类的构造函数中,在初始化列表中 _redis_conn
成员变量被放置在了基类 STREAM::CSession
后面。
要消除警告,你需要将 _redis_conn
的初始化放置在基类 STREAM::CSession
之前。例如:
template <typename... Args>
SessionStateHolder(toolkit::EventPoller::Ptr poller, const std::shared_ptr<cpp_redis::client> &conn, Args &&...args)
: STREAM::CSession(std::forward<Args>(args)...), _poller(std::move(poller)), _redis_conn(conn) {
// 构造函数实现
}
这样做会确保类成员变量按照声明顺序进行初始化,从而避免 -Wreorder
警告。
请注意,在进行任何更改之前,请仔细检查代码逻辑,并确保更改不会影响程序的行为和功能。
内容由零声教学AI助手提供,问题来源于学员提问