【问题标题】:C++: Access to a public member function from outside of a classC++:从类外部访问公共成员函数
【发布时间】:2011-05-17 19:41:24
【问题描述】:

我在一个单独的文件中定义了一个类,有时我需要从另一个源文件访问其中一个公共成员函数。由于某种原因,我忘记了如何做到这一点,编译器给了我一个错误。

我有 classA.h,其 A 类的定义与此类似:

class classA {
  public:
  int function1(int alpha);
}

和一个单独的文件classA.cpp 与实现。然后在其他一些文件 blah.cpp 中包含标题并尝试像这样访问它:

 classA::function1(15);

我的编译器拒绝它,错误是找不到“classA::function1(int)”的匹配项。
如果这很重要,我会使用 Embarcadero RAD studio 2010。

【问题讨论】:

    标签: c++ class member-functions


    【解决方案1】:

    要调用“普通”函数,您需要一个实例。

    classA a;
    a.function1(15);
    

    如果你想使用classA::调用函数,那么它需要是static

    classA {
      public:
        static int function1(int alpha);
    };
    
    //...
    classA::function1(15);
    

    请注意,在静态方法中,您不能访问任何非静态成员变量,原因相同 - 没有提供上下文的实例。

    【讨论】:

    • classA 需要是命名空间。
    • @Naveen: 是的,但这对于命名空间来说是一个真的不好的名字:)
    【解决方案2】:

    function1 是静态方法吗?如果不是,则需要该类的对象来调用成员函数。

    在你的 blah.cpp 中包含 classA.h 并创建一个 Class A 的对象,然后调用成员函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-10
      • 1970-01-01
      • 2013-06-14
      • 2012-10-06
      • 2013-03-25
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多