求教:如何在其他cpp文件当中,调用静态全局函数?

apaulette 2017-05-29 09:26:36
刚从C#转入C++,萌新一枚。我自己写了一个弹窗提示的函数,想像C#一样作为静态全局函数,不用实例化,直接在其他cpp文件里面调用。VS2013编译没有错误,链接的时候显示“"error LNK2019: 无法解析的外部符号 该符号在函数 中被引用" 错误。。我查了其他贴子,说是不能像C#那么用,因为静态函数的作用范围只能在自己的cpp文件内。但是我就是想实现这个功能,请问大神们如何做呢?非常感谢!
...全文
654 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2017-05-30
  • 打赏
  • 举报
回复
引用 3楼我是你的主体 的回复:
[quote=引用 2 楼 paschen 的回复:] 静态全局函数仅在本CPP中有效,去掉static修饰,此外,把函数声明写到头文件里,要使用该函数的CPP包含此头文件
我是自己写了一个类似于MessageBox的窗体,负责消息提示。就是不想每次调用之前都实例化一次。函数声明是写在.h里面的,用到这个消息提示功能的文件,也加过头文件了,这个没问题。因为我还有其他的小的函数也要这么实现,例如矩阵的计算,转换等等。次次都实例化太麻烦了。。。。 我中午又查阅了其他资料,有一种说法是:用全局函数包装静态方法。请问这个是怎么实现的呢?版主方便写几行代码示意一下吗?我不太懂。谢谢版主![/quote]c++和c#还是挺大差别的,函数不是对象,不存在实例化的,所以我没看懂你要哪种
paschen 2017-05-29
  • 打赏
  • 举报
回复
静态全局函数仅在本CPP中有效,去掉static修饰,此外,把函数声明写到头文件里,要使用该函数的CPP包含此头文件
sdghchj 2017-05-29
  • 打赏
  • 举报
回复
没学过面向过程的语言吗? C#跟Java类似都是什么都写在类里面。 C/C++里的函数是可以独立于类存在的,就是所谓的全局函数,而static会限制其只能在本源文件里使用,不要static就行了,在另一个源文件里使用时要先声明该函数。 //A.cpp

void fun(){
//实现
}
//A.h

void fun();  //声明
//B.cpp

#include "A.h"  //引用函数声明

fun(); //调用
apaulette 2017-05-29
  • 打赏
  • 举报
回复
显示“"error LNK2019: 无法解析的外部符号 该符号在函数 中被引用" 错误。
apaulette 2017-05-29
  • 打赏
  • 举报
回复
引用 2 楼 paschen 的回复:
静态全局函数仅在本CPP中有效,去掉static修饰,此外,把函数声明写到头文件里,要使用该函数的CPP包含此头文件
我是自己写了一个类似于MessageBox的窗体,负责消息提示。就是不想每次调用之前都实例化一次。函数声明是写在.h里面的,用到这个消息提示功能的文件,也加过头文件了,这个没问题。因为我还有其他的小的函数也要这么实现,例如矩阵的计算,转换等等。次次都实例化太麻烦了。。。。 我中午又查阅了其他资料,有一种说法是:用全局函数包装静态方法。请问这个是怎么实现的呢?版主方便写几行代码示意一下吗?我不太懂。谢谢版主!

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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