C++ 类转发声明libtorrent
我如何正确地向前声明一个类C++ 类转发声明libtorrent,c++,visual-studio,libtorrent,C++,Visual Studio,Libtorrent,我如何正确地向前声明一个类 //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_trac
//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;
}
//client_functions.cpp
使用名称空间libtorrent;
会议Sess;
bool Start\u Client\u Sess()
{
添加扩展(创建插件);
添加扩展(创建元数据插件);
添加扩展(创建跟踪插件);
添加扩展(创建智能插件);
Sess.start_upnp();
Sess.start_natpmp();
Sess.start_dht();
Sess.start_lsd();
错误代码e;
Sess.listen_on(标准:制作配对(68816889),e);
如果(e)
{
#ifdef调试控制台
std::cout而不是声明session Sess
declaresession*Sess
。这样,您可以从函数中控制Sess
的生存期。您可以在例如main()中创建它
并在最后执行的函数中销毁它。若要创建它,请执行Sess=new session;
若要销毁它,请执行删除Sess;
缺点是您必须用ses->
搜索/替换所有ses.
顺便说一句,在每个文件中使用extern
引用全局变量更合适,例如extern session*Sess
,实际声明它的文件除外(可能是创建它的文件,例如从main()
而不是声明session Sess
而是声明session*Sess
。这样,您可以从函数中控制Sess
的生存期。您可以在例如main()
并在最后执行的函数中销毁它。若要创建它,请执行Sess=new session;
若要销毁它,请执行删除Sess;
缺点是您必须用ses->
搜索/替换所有ses.
顺便说一句,在每个文件中使用extern
引用全局变量更合适,例如extern session*Sess
,实际声明它的文件除外(可能是创建它的文件,例如从main()
而不是声明session Sess
而是声明session*Sess
。这样,您可以从函数中控制Sess
的生存期。您可以在例如main()
并在最后执行的函数中销毁它。若要创建它,请执行Sess=new session;
若要销毁它,请执行删除Sess;
缺点是您必须用ses->
搜索/替换所有ses.
顺便说一句,在每个文件中使用extern
引用全局变量更合适,例如extern session*Sess
,实际声明它的文件除外(可能是创建它的文件,例如从main()
而不是声明session Sess
而是声明session*Sess
。这样,您可以从函数中控制Sess
的生存期。您可以在例如main()
并在最后执行的函数中销毁它。若要创建它,请执行Sess=new session;
若要销毁它,请执行删除Sess;
缺点是您必须用ses->
搜索/替换所有ses.
顺便说一句,在每个文件中使用extern
引用全局变量更合适,例如extern session*Sess
,实际声明它的文件除外(可能是创建它的文件,例如从main()
听起来您希望多个翻译单元共享一个全局会话
实例。您可以做的是,在一个翻译单元/cpp文件中定义ses,如下所示(假设这是您的主.cpp):
在其头文件(main.hpp)中,包括:
extern libtorrent::session Sess;
在要使用会话的任何其他翻译单元/cpp文件中,确保包含头文件(main.hpp),然后您可以使用main.cpp创建的实例。听起来您希望一个全局会话实例由多个翻译单元共享。您可以做的是,在一个翻译单元/cpp文件中定义ses,如下所示(假设这是您的main.cpp):
在其头文件(main.hpp)中,包括:
extern libtorrent::session Sess;
在要使用会话的任何其他翻译单元/cpp文件中,确保包含头文件(main.hpp),然后您可以使用main.cpp创建的实例。听起来您希望一个全局会话实例由多个翻译单元共享。您可以做的是,在一个翻译单元/cpp文件中定义ses,如下所示(假设这是您的main.cpp):
在其头文件(main.hpp)中,包括:
extern libtorrent::session Sess;
在要使用会话的任何其他翻译单元/cpp文件中,确保包含头文件(main.hpp),然后您可以使用main.cpp创建的实例。听起来您希望一个全局会话实例由多个翻译单元共享。您可以做的是,在一个翻译单元/cpp文件中定义ses,如下所示(假设这是您的main.cpp):
在其头文件(main.hpp)中,包括:
extern libtorrent::session Sess;
在要使用会话的任何其他翻译单元/cpp文件中,确保包含头文件(main.hpp),然后您可以使用main.cpp创建的实例。我不确定您到底在问什么,但这不是如何转发声明类,顺便说一句。“session”是类,如果在“man.cpp”中定义,它在“client_functions.cpp”中不被识别。我不确定您到底在问什么,但不是如何转发声明类,顺便说一句。“session”如果在“man.cpp”\u tWinMain中定义,“on”是类,它在“client\u functions.cpp”中未被识别。我不确定你到底在问什么,但这不是如何向前声明类,顺便说一句。“session”是类,如果在“man.cpp”\u tWinMain中定义,它在“client\u functions.cpp”中未被识别。我不确定你到底在问什么,但它是不知道如何转发decl