您如何访问其他类的功能?

时间:2020-10-19 07:07:30

标签: c++

例如,在我的程序中我有2个类,并且我想从另一个类访问另一个类中的函数,有没有办法做到这一点?

  class hello{
  private:
  public:
  void function(){
 // codes
 }
 }
  
  class hi{
  private:
  public:
  void function(){
 // codes i want to access from class hello
 }
 }

3 个答案:

答案 0 :(得分:2)

您需要使用hello对象来调用hello::function()类中的hi,因为hello::function()不是静态函数。例如:

class hi {
private:
    hello mHello;
    
public:
    void function(){
        mHello.function();
    }
 };

答案 1 :(得分:1)

我将尝试澄清一些有关类和成员函数的作用。如果您使用hellofoo等完全抽象的名称,则可能很难将您的学习内容与任何实际内容联系起来。

类名通常是名词。例如class Dog { ... };。因为它们代表对象的类型。

函数名称往往是动词。例如void Bark() { ... }。因为函数做事。

举个例子:

class Dog // define a "Dog" type of object 
{
public:
    void Bark() // give dogs the ability to bark.
    {
        std::cout << "Woof!" << std::endl; 
    }
};

您可能会以为您可以直接致电Bark(),例如Dog::Bark();。但这是荒谬的,因为“狗”不能吠叫。 *一个*狗吠。 Dog只是对象的类型,不是对象本身。您必须实例化一个狗对象。像这样:

Dog fido;
fido.Bark();

答案 2 :(得分:0)

这取决于您如何处理此类。
如果需要静态方法,可以执行此操作。

#include <iostream>

class Hello
{
    public:
        static void hello()
        {
            printf("%s", "Hello\n");
        }
};
  
class World
{
    public:
        void world()
        {
            Hello::hello();
            printf("%s", "World\n");
        }
 };

int main()
{
    auto w = World();
    w.world();
}

否则,您可以这样做。

#include <iostream>

class Hello
{
    public:
        void hello()
        {
            printf("%s", "Hello\n");
        }
};
  
class World
{
    public:
        void world()
        {
            auto h = Hello();
            h.hello();
            printf("%s", "World\n");
        }
 };

int main()
{
    auto w = World();
    w.world();
}