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
declare
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()

而不是声明
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