如何让来自不同 类 的内联函数相互调用

How to let inline functions from different classes call each other

为了尽可能快地编写一些核心代码 运行,我想将三个函数内联,它们分别属于两个 类。

理想情况下,我想将它们定义如下:

class ClassB;
class ClassA {
    ClassB * pB;

    inline void func1() {
        // do something
    };

    inline void func2() {
        pB->func3();
    };
};

class ClassB {
    ClassA * pA;

    inline void func3() {
        pA->func1();
    };
};

我知道如果我像上面那样简单地编码是不可能的。 我的问题是:有没有办法,我们可以做类似的事情? 至少,让他们尽快运行。 谢谢!

您可以在 class 定义之外定义函数,但仍然 inline 它们。

class ClassB;
class ClassA {
   ClassB * pB;

   void func1();

   void func2();
};

class ClassB {
   ClassA * pA;

   void func3();
};

inline void A::func1()
{
   // do something
}

inline void A::func2()
{
   pB->func3();
}

inline void B::func3()
{
   pA->func1();
}

我不确定编译器将如何生成相互引用 inline 函数的代码,但从句法的角度来看它们很好。

如果您想从 class 外部呼叫成员,您必须创建成员 public。

您调用的函数必须在您调用它们之前定义。您可以通过在 class 之外定义一些函数来实现此目的:

class ClassB;

class ClassA
{
    ClassB * pB;

    public:
        void func1()
        {
            // do something
        };

        void func2();
};

class ClassB
{
    ClassA * pA;

    public:
        void func3() 
        {
            pA->func1();
        };
};

inline void ClassA::func2()
{
    pB->func3();
};

另请注意,在 class.

中定义函数时,不必使用 inline 关键字