4

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

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

有人可以给我一个如何正确处理 C++ 类文件的例子吗?现在真的很迷茫。

谢谢!

4

2 回答 2

4

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

您的 main.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
于 2013-09-20T18:03:10.653 回答
0

您的问题有点难以理解,但如果我理解正确,您正在寻找在头文件中创建具有接口的类的“正确”方法。这是执行此操作的类的示例:

场景.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) 仅包含头文件。只要您坚持这些语义,链接器就会自动为您管理所有这些麻烦。

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

于 2013-09-20T17:58:54.803 回答