如何禁用函数重载

tianxiadys 2014-07-05 06:30:29
假设我在a.cpp中有如下代码


typedef struct _STR{
....
}STR, *PSTR;
PSTR CreateStr(){...}
BOOL DeleteStr(PSTR input){...}


我想在b.cpp中调用这两个函数,但是还想对b.cpp隐藏结构STR的细节
于是我在b.cpp写下如下代码

typedef void *PSTR;
PSTR CreateStr();
BOOL DeleteStr(PSTR input);


但是因为void*与STR*不同,所以连接器报告错误未找到函数

所以咧,我不会
...全文
171 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianxiadys 2014-07-05
  • 打赏
  • 举报
回复
引用 3 楼 baichi4141 的回复:
[quote=引用 2 楼 qq874774259 的回复:] [quote=引用 1 楼 baichi4141 的回复:] 禁用函数重载这个需求比较新奇,从来没听说过 如果是想隐藏细节的话,可以定义一个只有纯虚函数的基类作为接口,有实际功能的派生类继承这个基类,然后只让调用方看得到这个基类的定义和创建销毁派生类的两个函数
好主意啊 但是内存要如何分配呢? 我原先是在CreateStr函数中使用HeapAlloc函数分配内存 如果采用这种方法难道要在CreateStr之外使用new分配内存然后在构造函数初始化?这样的话是不是CreateStr函数可以删了[/quote] 为啥你需要手动分配内存,而不是直接使用new?
class A
{
    virtual void Func( void ) = 0;
    virtual ~A();
}

A * Create( void );
void Delete( A * pA );

class B : public A
{
    virtual void Func( void ) { };
}

A * Create( void )
{
    return new B;
}
void Delete( A * pA )
{
    delete pA;
}
[/quote]new分配的内存很零散,用堆的话可以一次性全释放 嗯,这个方法基本可以
baichi4141 2014-07-05
  • 打赏
  • 举报
回复
引用 2 楼 qq874774259 的回复:
[quote=引用 1 楼 baichi4141 的回复:] 禁用函数重载这个需求比较新奇,从来没听说过 如果是想隐藏细节的话,可以定义一个只有纯虚函数的基类作为接口,有实际功能的派生类继承这个基类,然后只让调用方看得到这个基类的定义和创建销毁派生类的两个函数
好主意啊 但是内存要如何分配呢? 我原先是在CreateStr函数中使用HeapAlloc函数分配内存 如果采用这种方法难道要在CreateStr之外使用new分配内存然后在构造函数初始化?这样的话是不是CreateStr函数可以删了[/quote] 为啥你需要手动分配内存,而不是直接使用new?
class A
{
    virtual void Func( void ) = 0;
    virtual ~A();
}

A * Create( void );
void Delete( A * pA );

class B : public A
{
    virtual void Func( void ) { };
}

A * Create( void )
{
    return new B;
}
void Delete( A * pA )
{
    delete pA;
}
tianxiadys 2014-07-05
  • 打赏
  • 举报
回复
引用 1 楼 baichi4141 的回复:
禁用函数重载这个需求比较新奇,从来没听说过 如果是想隐藏细节的话,可以定义一个只有纯虚函数的基类作为接口,有实际功能的派生类继承这个基类,然后只让调用方看得到这个基类的定义和创建销毁派生类的两个函数
好主意啊 但是内存要如何分配呢? 我原先是在CreateStr函数中使用HeapAlloc函数分配内存 如果采用这种方法难道要在CreateStr之外使用new分配内存然后在构造函数初始化?这样的话是不是CreateStr函数可以删了
baichi4141 2014-07-05
  • 打赏
  • 举报
回复
禁用函数重载这个需求比较新奇,从来没听说过 如果是想隐藏细节的话,可以定义一个只有纯虚函数的基类作为接口,有实际功能的派生类继承这个基类,然后只让调用方看得到这个基类的定义和创建销毁派生类的两个函数

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧