gpt4 book ai didi

c++ - 某些 C++ 代码在一个项目中出错,而在另一个项目中编译正常?

转载 作者:行者123 更新时间:2023-11-30 01:26:22 25 4
gpt4 key购买 nike

以下代码在 RenderingEngine.cpp 中的一个 C++ 项目中编译良好:

IRenderingEngine* CreateRenderer1()
{
return new RenderingEngine1();
}

但是如果我在 Xcode 4.3.2 中开始一个新项目,它会给出错误:

Allocating an object of abstract class type 'RenderingEngine1'

定义在IRenderingEngine.hpp

struct IRenderingEngine {
virtual void Initialize(int width, int height) = 0;
virtual void Render() const = 0;
virtual void UpdateAnimation(float timeStep) = 0;
virtual void OnRotate(DeviceOrientation newOrientation) = 0;
virtual ~IRenderingEngine() {}
};

如何解决这个问题? (这是其 iPhone 3D Programming 中的 project 1 的一部分)。

更新:在RenderingEngine.cpp中:

public:
RenderingEngine1();
void Initialize(int width, int height);
void Render() const;
void UpdateAnimation(float timeStep);
void onRotate(DeviceOrientation newOrientation);

private:
GLuint m_framebuffer;
GLuint m_renderbuffer;

};

这 5 个函数都已定义。 (最后两个是虚拟的——现在都是空的)

最佳答案

我猜,这取决于您如何使用返回的 IRenderingEngine 指针。当项目在一个项目中编译时,您必须从基类中实现所有必要的纯虚函数。在失败的编译中,您必须缺少一两个实现。

为什么它在“书本”示例中编译,而不是您的示例很难用您提供的信息来说明。我会检查构建输出以确保您正在编译的源文件(两个类的 header 和实现)与您认为的完全一致。您可能正在选择另一个版本的 IRenderingEngine,它没有所有必需的纯虚拟实现。

关于c++ - 某些 C++ 代码在一个项目中出错,而在另一个项目中编译正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10632142/

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