【发布时间】:2015-03-07 12:36:37
【问题描述】:
我如何正确转发声明一个类?
//client_functions.cpp
using namespace libtorrent;
session Sess;
bool Start_Client_Sess( )
{
Sess.add_extension ( create_ut_pex_plugin );
Sess.add_extension ( create_ut_metadata_plugin );
Sess.add_extension ( create_lt_trackers_plugin );
Sess.add_extension ( create_smart_ban_plugin );
Sess.start_upnp( );
Sess.start_natpmp( );
Sess.start_dht( );
Sess.start_lsd( );
error_code e;
Sess.listen_on ( std::make_pair ( 6881 , 6889 ) , e );
if ( e )
{
#ifdef DEBUG_CONSOLE
std::cout << "Start Client failed\n";
#endif
return false;
}
return true;
}
我遇到的问题是代码只有一个Sess,这就是它需要的方式,就好像在每个客户端函数中声明了session Sess;一样,创建了一个新会话,但现在声明了session Sess;在函数之外,应用程序无法正常关闭,因为Sess 拥有自己的线程,并且从对应用程序的第二次调用获取命令行参数会导致第二个实例挂起。
我想我需要session Sess; 才能进入_tWinMain,但把它放在那里会给我在client_functions.cpp 上的错误,它抱怨Sess 是未定义的。
【问题讨论】:
-
我不确定你在问什么,但这不是如何前向声明一个类,顺便说一句。
-
'session' 是类,如果在 'man.cpp' '_tWinMain' 中定义,则在 'client_functions.cpp' 中无法识别。
标签: c++ visual-studio libtorrent