C++ Class Files

C++ Class Files

本文关键字:Files Class C++      更新时间:2023-10-16

我在学习使用文件进行C++课时遇到了很多麻烦。 为了学习我使用Bucky Roberts/The New Boston C++教程,我已经尝试了他所做的,但它不起作用。

我有main.cpp和OtherClass.cpp OtherClass.h作为标题。 每次我尝试为构造函数执行 OtherClass::OtherClass(){} 时,它都会出错"C++需要所有声明的类型说明符"

有人可以给我一个如何正确C++类文件的示例吗? 现在真的很困惑。

谢谢!

将头文件用于类的简单示例(在单独的.cpp文件中实现)如下所示:

您的主.cpp文件:

#include "OtherClass.h"
int main()
{
  OtherClass otherClass;
  //use otherClass here...
}

接下来,您的 OtherClass.h 文件:

class OtherClass
{
  public:
    OtherClass();
    int someFunction(int parameters);
};

最后是你的 OtherClass.cpp 文件:

#include "OtherClass.h"
OtherClass::OtherClass() 
{
  //implementation here
}
int OtherClass::someFunction(int parameters)
{
  //implemenation here
  return 0; 
}

要记住的主要事项:

  • #include "OtherClass.h"同时包含 OtherClass.cpp 和 main.cpp
  • 如果要
  • 在其他地方定义实现,请确保使用";"而不是"{}"完成构造函数和函数声明。
  • 确保你正在编译 OtherClass.cpp以及 main.cpp。对于MinGW,这看起来像g++ main.cpp OtherClass.cpp

你的问题有点难以理解,但如果我理解正确,你正在寻找在头文件中使用接口创建类的"正确"方法。下面是执行此操作的类的示例:

场景.h

#pragma once
#include "Window.h"
#include "Entity.h"
class Scene
{
public:
    Scene(Window *_window);
    ~Scene(void);
    void render(Entity item);
    void render(Entity item, SDL_Rect *clip);
protected:
    Window *window;
};

场景.cpp

#include "Scene.h"

Scene::Scene(Window *_window)
{
    window = _window;
}

Scene::~Scene(void)
{
}
void Scene::render(Entity item) {
    render(item, NULL);
}
void Scene::render(Entity item, SDL_Rect *clip) {
    window->draw( item.getImage(), item.getCoordinates(), clip, item.getAngle() );
}
请注意,头文件

包含需要正确链接的头文件,而实现文件 (.cpp) 仅包含头文件。只要您坚持这些语义,链接器就应该自动为您管理所有这些麻烦。

我希望这有帮助;如果没有,请考虑改写您的问题或粘贴一些代码。