C++ 不确定如何装饰我的C++;C语言中使用的库代码

C++ 不确定如何装饰我的C++;C语言中使用的库代码,c++,c,C++,C,我们定义了一些方法,以便在需要时允许临时控制台输入。这些方法包含在名称空间中,并定义和使用类来执行实际工作 为简洁起见,将定义简化为: 控制台输入.h #include <cstddef> #include <map> #include <memory> #include <vector> namespace MyNameSpc { typedef std::vector<char> buffer_t; class Console

我们定义了一些方法,以便在需要时允许临时控制台输入。这些方法包含在名称空间中,并定义和使用类来执行实际工作

为简洁起见,将定义简化为:

控制台输入.h

#include <cstddef>
#include <map>
#include <memory>
#include <vector>

namespace MyNameSpc
{

typedef std::vector<char> buffer_t;

class ConsoleInput
{
// Methods for windows and linux console input
}

int GetString(buffer_t &buffer, ...);

}
#include "ConsoleInput.h"
#include <cstddef>
#include <string>

namespace MyNameSpc
{

const std::string empty = std::string();

class RequestInputParam
{
// Methods
}

int RequestInput(buffer_t &buffer);
int RequestInput(buffer_t &buffer, const RequestInputParam &param);
// and other overloads
}
#ifndef REQUEST_WRAPPER_H
#define REQUEST_WRAPPER_H

#include <stddef.h>
#include "RequestInput.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef struct RequestInputParam RequestInputParam; // line 29

RequestInputParam* CreateRequestInputParam();
void DisposeRequestInputParam( RequestInputParam* pObject );

void C_AddMainPrompt(RequestInputParam *param, char *msg);

int C_RequestInputAllocPtr(char * * const ppInput,
                           unsigned int * const pInputLen);

int C_RequestInput(char * const pInput,
                   unsigned int * const pInputLen);

#ifdef __cplusplus
}
#endif

#endif   /* REQUEST_WRAPPER_H */
#ifndef REQUEST_WRAPPER_H
#define REQUEST_WRAPPER_H

#ifdef __cplusplus
extern "C" {
#endif

#include <stddef.h>

typedef struct C_RequestInputParam C_RequestInputParam;

C_RequestInputParam * CreateRequestInputParam();
void DisposeRequestInputParam( C_RequestInputParam *pObject );

void C_AddMainPrompt( C_RequestInputParam *param, char *msg);

int C_RequestInputAllocPtr( char * * const ppInput,
                           unsigned int * const pInputLen );

int C_RequestInput( char * const pInput,
                    unsigned int * const pInputLen );

#ifdef __cplusplus
}
#endif

#endif   /* REQUEST_WRAPPER_H */
RequestInputWrapper.cpp

#include "ConsoleInput.h"
#include "RequestInput.h"
#include <cstddef>
#include <iostream>
#include <memory>
#include <string>
#include <fcntl.h>
#include <stdio.h>
// and other headers.

namespace MyNameSpc
{
// implements class ConsoleInput methods.
// Implements GetString()
}
#include "ConsoleInput.h"
#include "RequestInput.h"
#include <cstddef>
#include <iostream>
#include <memory>
#include <string>

namespace MyNameSpc
{
// implements the overloaded methods.
}
#include "RequestInput.h"
#include "RequestInputWrapper.h" // line 13

#ifdef __cplusplus
extern "C" {
#endif

RequestInputParam* CreateRequestInputParam()
{
    return new RequestInputParam();   // line 25
}

void DisposeRequestInputParam( RequestInputParam* pObject ) // line 28
{
    if ( pObject != NULL )
    {
        delete pObject; // line 32
        pObject = NULL;
    }
}

void C_AddMainPrompt(RequestInputParam *param, char *msg)          { param->AddMainPrompt( msg ); }

int C_RequestInputAllocPtr(char * * const ppInput,
                           unsigned int * const pInputLen)
{
    return RequestInput(ppInput, pInputLen);
}

int C_RequestInput(char * const pInput,
                   unsigned int * const pInputLen)
{
    return RequestInput(pInput, pInputLen);
}

#ifdef __cplusplus
}
#endif
#include "RequestInput.h"
#include "RequestInputWrapper.h"

extern "C" {

C_RequestInputParam * CreateRequestInputParam()
{
    return reinterpret_cast< C_RequestInputParam * >( new RequestInputParam() );
}

void DisposeRequestInputParam( C_RequestInputParam *pObject )
{
    if ( pObject != NULL )
    {
        delete reinterpret_cast< MyNameSpc::RequestInputParam * >( pObject );
        pObject = NULL;
    }
}

void C_AddMainPrompt( C_RequestInputParam *param, char *msg )
{
    reinterpret_cast< MyNameSpc::RequestInputParam * >( param )->AddMainPrompt( msg );
}

int C_RequestInputAllocPtr( char * * const ppInput,
                            unsigned int * const pInputLen )
{
    return MyNameSpc::RequestInput( ppInput, pInputLen );
}

int C_RequestInput( char * const pInput,
                    unsigned int * const pInputLen )
{
    return MyNameSpc::RequestInput( pInput, pInputLen );
}

}
它目前抛出了以下错误(I C&p仅在第一部分,它开始重复;行号与上面的代码不匹配,上面的代码已删除所有注释,因此我添加了注释和注释行#):


我怀疑文章中被称为“副本”的答案只是写出来的,没有经过测试。经过更多的搜索,我最终偶然发现了它,它提供了构建该平台所需的指导

简而言之,我在我的C++包装代码(FACEPALM)中缺少命名空间,我必须添加RealTytCasic调用。我还更改了typedef中类型的名称。。。我认为它是引用C++类型(因为这是至少一个例子显示),但是,不…它需要是它自己的结构类型

RequestInputWrapper.h

#include <cstddef>
#include <map>
#include <memory>
#include <vector>

namespace MyNameSpc
{

typedef std::vector<char> buffer_t;

class ConsoleInput
{
// Methods for windows and linux console input
}

int GetString(buffer_t &buffer, ...);

}
#include "ConsoleInput.h"
#include <cstddef>
#include <string>

namespace MyNameSpc
{

const std::string empty = std::string();

class RequestInputParam
{
// Methods
}

int RequestInput(buffer_t &buffer);
int RequestInput(buffer_t &buffer, const RequestInputParam &param);
// and other overloads
}
#ifndef REQUEST_WRAPPER_H
#define REQUEST_WRAPPER_H

#include <stddef.h>
#include "RequestInput.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef struct RequestInputParam RequestInputParam; // line 29

RequestInputParam* CreateRequestInputParam();
void DisposeRequestInputParam( RequestInputParam* pObject );

void C_AddMainPrompt(RequestInputParam *param, char *msg);

int C_RequestInputAllocPtr(char * * const ppInput,
                           unsigned int * const pInputLen);

int C_RequestInput(char * const pInput,
                   unsigned int * const pInputLen);

#ifdef __cplusplus
}
#endif

#endif   /* REQUEST_WRAPPER_H */
#ifndef REQUEST_WRAPPER_H
#define REQUEST_WRAPPER_H

#ifdef __cplusplus
extern "C" {
#endif

#include <stddef.h>

typedef struct C_RequestInputParam C_RequestInputParam;

C_RequestInputParam * CreateRequestInputParam();
void DisposeRequestInputParam( C_RequestInputParam *pObject );

void C_AddMainPrompt( C_RequestInputParam *param, char *msg);

int C_RequestInputAllocPtr( char * * const ppInput,
                           unsigned int * const pInputLen );

int C_RequestInput( char * const pInput,
                    unsigned int * const pInputLen );

#ifdef __cplusplus
}
#endif

#endif   /* REQUEST_WRAPPER_H */
\ifndef请求包装器\u H
#定义请求包装器
#ifdef_uucplusplus
外部“C”{
#恩迪夫
#包括
类型定义结构C_RequestInputParam C_RequestInputParam;
C_RequestInputParam*CreateRequestInputParam();
void DisposeRequestInputParam(C_RequestInputParam*poobject);
void C_addmain提示符(C_RequestInputParam*param,char*msg);
int C_RequestInputAllocPtr(字符**常量),
无符号整数*const pInputLen);
int C_请求输入(字符*常量输入,
无符号整数*const pInputLen);
#ifdef_uucplusplus
}
#恩迪夫
#endif/*请求包装器*/
RequestInputWrapper.cpp

#include "ConsoleInput.h"
#include "RequestInput.h"
#include <cstddef>
#include <iostream>
#include <memory>
#include <string>
#include <fcntl.h>
#include <stdio.h>
// and other headers.

namespace MyNameSpc
{
// implements class ConsoleInput methods.
// Implements GetString()
}
#include "ConsoleInput.h"
#include "RequestInput.h"
#include <cstddef>
#include <iostream>
#include <memory>
#include <string>

namespace MyNameSpc
{
// implements the overloaded methods.
}
#include "RequestInput.h"
#include "RequestInputWrapper.h" // line 13

#ifdef __cplusplus
extern "C" {
#endif

RequestInputParam* CreateRequestInputParam()
{
    return new RequestInputParam();   // line 25
}

void DisposeRequestInputParam( RequestInputParam* pObject ) // line 28
{
    if ( pObject != NULL )
    {
        delete pObject; // line 32
        pObject = NULL;
    }
}

void C_AddMainPrompt(RequestInputParam *param, char *msg)          { param->AddMainPrompt( msg ); }

int C_RequestInputAllocPtr(char * * const ppInput,
                           unsigned int * const pInputLen)
{
    return RequestInput(ppInput, pInputLen);
}

int C_RequestInput(char * const pInput,
                   unsigned int * const pInputLen)
{
    return RequestInput(pInput, pInputLen);
}

#ifdef __cplusplus
}
#endif
#include "RequestInput.h"
#include "RequestInputWrapper.h"

extern "C" {

C_RequestInputParam * CreateRequestInputParam()
{
    return reinterpret_cast< C_RequestInputParam * >( new RequestInputParam() );
}

void DisposeRequestInputParam( C_RequestInputParam *pObject )
{
    if ( pObject != NULL )
    {
        delete reinterpret_cast< MyNameSpc::RequestInputParam * >( pObject );
        pObject = NULL;
    }
}

void C_AddMainPrompt( C_RequestInputParam *param, char *msg )
{
    reinterpret_cast< MyNameSpc::RequestInputParam * >( param )->AddMainPrompt( msg );
}

int C_RequestInputAllocPtr( char * * const ppInput,
                            unsigned int * const pInputLen )
{
    return MyNameSpc::RequestInput( ppInput, pInputLen );
}

int C_RequestInput( char * const pInput,
                    unsigned int * const pInputLen )
{
    return MyNameSpc::RequestInput( pInput, pInputLen );
}

}
#包括“RequestInput.h”
#包括“RequestInputWrapper.h”
外部“C”{
C_RequestInputParam*CreateRequestInputParam()
{
返回reinterpret_cast(new RequestInputParam());
}
void DisposeRequestInputParam(C_RequestInputParam*poobject)
{
if(pObject!=NULL)
{
删除reinterpret_cast(POObject);
pObject=NULL;
}
}
void C_addmain提示符(C_RequestInputParam*param,char*msg)
{
重新解释\u cast(param)->AddMainPrompt(msg);
}
int C_RequestInputAllocPtr(字符**常量),
无符号整数*const pInputLen)
{
返回MyNameSpc::RequestInput(ppInput、pInputLen);
}
int C_请求输入(字符*常量输入,
无符号整数*const pInputLen)
{
返回MyNameSpc::RequestInput(pInput、pInputLen);
}
}
< /代码>您需要创建全局(非命名空间)函数包装器(声明为“代码>外部”C“< /代码>”),调用C++函数。