gpt4 book ai didi

C++ 从另一个类调用一个函数

转载 作者:可可西里 更新时间:2023-11-01 17:35:31 24 4
gpt4 key购买 nike

C++ 的新手,在从另一个类调用函数时遇到问题。

B 类继承自 A 类,我希望 A 类能够调用在 B 类中创建的函数。

using namespace std;

class B;

class A
{

public:

void CallFunction ()
{
B b;
b.bFunction();
}

};

class B: public A
{
public:
virtual void bFunction()
{
//stuff done here
}

};

它在屏幕上看起来一切正常(没有明显的错误)但是当我尝试编译它时我得到一个错误 C2079 'b' 使用未定义的类 B。

我试过让他们成为指针/ friend ,但我遇到了同样的错误。

最佳答案

    void CallFunction ()
{ // <----- At this point the compiler knows
// nothing about the members of B.
B b;
b.bFunction();
}

发生这种情况的原因与 C 中的函数不能相互调用的原因相同,除非至少有一个函数被声明为函数原型(prototype)。

要解决这个问题,我们需要确保这两个类在使用前都已声明。我们将声明与定义分开。 This MSDN article更详细地解释了声明和定义。

class A
{
public:
void CallFunction ();
};

class B: public A
{
public:
virtual void bFunction()
{ ... }
};

void A::CallFunction ()
{
B b;
b.bFunction();
}

关于C++ 从另一个类调用一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com