如何让来自不同类的内联函数相互调用[关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让来自不同类的内联函数相互调用[关闭]相关的知识,希望对你有一定的参考价值。
为了使一些核心代码尽可能快地运行,我想要内联三个函数,它们分别属于两个类。
理想情况下,我想将它们定义如下:
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();
};
};
我知道如果我如上所述简单编码是不可能的。我的问题是:有没有办法,我们可以做类似的事情?至少,让他们尽可能快地跑。谢谢!
答案
您可以在类定义之外定义函数,并且仍然可以使用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 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
关键字。
以上是关于如何让来自不同类的内联函数相互调用[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
java中不同类如何相互访问变量值(新手见解,可能很low)