C ++如何在命名空间中调用另一个类的静态函数

januw:

我是C ++的新手,在以下代码中,我想调用该A::f函数

namespace Top
{

class B
    {
  public:
    void hello()
    {
      Top::A::f();
    }
    };

class A
    {
    public:
    static void f()
    {
      printf("123\n");
    }
    };
}

int main()
{
  Top::B b;
  b.hello();

  return 0;
}

但是出现了以下错误

Error C2039 "f": not a member of "Top" 
Error C3083 "A": The symbol on the left side of "::" must be a type 
Error C3861 "f": Cannot find identifier 

我该如何修复我的代码,谢谢

idclev 463035818:

您不能在函数被声明之前调用它。切换两个类,以便在定义B编译器时就已经知道A::f

namespace Top
{
class A
    {
    public:
    static void f()
    {
      printf("123\n");
    }
    };

class B
    {
  public:
    void hello()
    {
      Top::A::f();
    }
    };
}

int main()
{
  Top::B b;
  b.hello();

  return 0;
}

PS:不是这个问题的主题,但是static当您实际上想要命名空间内的自由函数时,不要滥用方法。在可能的情况下,C ++比成员函数更喜欢自由函数。不需要成为成员的任何方法都有助于实现更简洁的类设计。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从另一个C文件调用静态函数?

在C ++中,如何与另一个类的静态函数成为朋友

C# List 在类和命名空间中,从另一个类访问它

统一从同一命名空间中的另一个类(在克隆对象上)获取函数,c#

我如何从C ++中的静态线程入口点函数调用另一个函数?

C ++通过“使用”在另一个而不是封闭的名称空间中定义类

另一个名称空间中函数的C ++ ADL

C# 在代码隐藏中,如何在同一命名空间内的另一个类中引用公共变量?

C ++-从另一个类构造函数调用一个类构造函数

如何在C ++中将多个文件包装到同一个命名空间中

C#:不能包含来自另一个命名空间的类

C#如何在while循环中从另一个类调用void方法

c#如何从另一个类调用一个类

如何在C#中从另一个时间中减去时间?

从字符串C#中从另一个名称空间调用函数

如何在C#中从另一个私有类调用私有类变量

稍后在 C++ 中的另一个类方法中调用类构造函数

C ++在另一个函数内调用类函数

如何在C#中的另一个方法中调用同一类中的方法?

如何在 C++ 中将另一个类引用到另一个类中?

另一个函数内部的C ++调用函数

从另一个函数C#调用另一个函数

bazel Rules_go:将go二进制文件链接到工作空间中另一个目标生成的静态c ++库(.a文件)

C++ - 使用指针调用另一个类的成员函数

从 C#/.NET MVC 应用程序中的另一个类调用函数

在另一个类中调用成员函数c ++

C ++从文件阅读器中的另一个类调用集合函数

在 C# 中从另一个类调用主窗体中的函数

C ++ | DLL / EXE-如何从导出的类调用另一个类方法?