如何让来自不同 类 的内联函数相互调用
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
关键字
为了尽可能快地编写一些核心代码 运行,我想将三个函数内联,它们分别属于两个 类。
理想情况下,我想将它们定义如下:
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
关键字