В то время я изучаю код с boost/asio. Многие примеры кода используют комбинацию async_accept и bind. В коде сервера я сталкиваюсь с чем-то вроде этого:
class Tcp_server
{
public:
Tcp_server()
{
}
void start_accept(int a)
{
if(a>0)
{
cout<<a<<endl;
handle_accept(a-1);
}
}
void handle_accept(int a)
{
if(a>0)
{
cout<<a<<endl;
start_accept(a-1);
}
}
};
Если я создаю экземпляр Tcp_server и вызываю либо handle_accept, либо start accept, он работает. Но если я опустил инкапсуляцию класса Tcp_server, компилятор будет жаловаться, что "handle_accept не объявлен". Я просто задаюсь вопросом, автоматически ли компилятор будет объявлять все функции, определенные в одном классе. Может ли кто-нибудь объяснить, почему?