我们可以访问一个文件中定义的静态函数到另一个文件吗?
在下面的代码中,我无法调用静态方法fun()
。为什么我不能和其他方式访问它?
static void fun();// In abc.h
static void fun(){cout<<"Hello."<<endl;}
//xyz.cpp
#include "abc.h"
void main()
{
fun();// Why I am not able to call this static method? Is there any other way to
//Access this static function?
}
答案 0 :(得分:4)
因为这就是static
(关于自由函数和全局变量)的工作方式。它应该这样做:限制对当前编译单元的访问。大多数C / C ++编译器通过使用源文件名修改函数名来实现此目的。
理论上,你可以分解修改,在运行时定位可执行文件中的受损函数,并执行一些程序集伏都教来强制执行函数调用,但这将是脆弱的,依赖于平台的,并且一般的痛苦 - 我怀疑你是否可以将它付诸实践。如果你想从其他地方调用它,就不要声明函数是静态的。
答案 1 :(得分:0)
您可以传递函数指针( static 函数的指针)并在文件中使用它。