代码之家  ›  专栏  ›  技术社区  ›  Leon

如何让不同类的内联函数互相调用[关闭]

  •  -3
  • Leon  · 技术社区  · 7 年前

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

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

    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();
        };
    };
    

    我的问题是:有没有办法,我们可以做类似的事情? 至少,让他们跑得尽可能快。 谢谢

    2 回复  |  直到 7 年前
        1
  •  4
  •   R Sahu    7 年前

    您可以在类定义之外定义函数,并且 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();
    }
    

    内联

        2
  •  1
  •   Sid S    7 年前

    如果你想在课外给他们打电话,你必须让他们公开。

    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();
    };
    

    还请注意,使用 inline