/home/ydh/src/library/include/smpp_v2/receiver.hpp:12:28: warning: 'Receiver::endpoint_iterator_' will be initialized after [-Wreorder]
tcp::resolver::iterator endpoint_iterator_;
^~~~~~~~~~~~~~~~~~
/home/ydh/src/library/include/smpp_v2/receiver.hpp:10:20: warning: 'boost::asio::ip::tcp::socket Receiver::socket_' [-Wreorder]
tcp::socket socket_;
^~~~~~~
/home/ydh/src/program/OJT/smpp_v2/receiver.cpp:20:1: warning: when initialized here [-Wreorder]
Receiver::Receiver(boost::asio::io_context& io_context,tcp::resolver::iterator endpoint_iterator)
^~~~~~~~
Transmitter::Transmitter(boost::asio::io_context& io_context,tcp::resolver::iterator endpoint_iterator)
: io_context_(io_context),
endpoint_iterator_(endpoint_iterator),
socket_(io_context),
connected_(false),
timer_(io_context)
{
class Transmitter {
//connect tcp
private :
static bool binded_;
tcp::socket socket_;
boost::asio::io_context& io_context_;
tcp::resolver::iterator endpoint_iterator_;
bool connected_;
smpp_message read_msg_;
boost::asio::deadline_timer timer_;
멤버 이니셜라이저를 사용하여 초기화 할 경우 초기화 코드의 순서대로가 아닌 class에 선언된 순서대로 초기화가 됩니다.
따라서 iocontext, endpointiterator, socket 순으로 초기화 되는것이 아니라, 실제로는 socket, iocontext endpointiterator순으로 초기화 되어 예상하지못한 초기화가 발생할 수 있다는 것을 알려줍니다.
제가 겪은 경우, io_context라는 동일한 값으로 여러 변수를 초기화 하기에 발생 가능한 문제입니다.
오류를 미리 방지하기 위해서 순서를 맞춰주면 경고는 사라집니다.