我在学习在 C++ 中为类使用文件时遇到了很多麻烦。为了学习我使用 Bucky Roberts/The New Boston C++ 教程,我已经尝试过他所做的,但它不起作用。
我有 main.cpp 和 OtherClass.cpp 以及 OtherClass.h 作为标题。每次我尝试为构造函数执行 OtherClass::OtherClass(){} 时,都会出现“C++ 需要所有声明的类型说明符”的错误
有人可以给我一个如何正确处理 C++ 类文件的例子吗?现在真的很迷茫。
谢谢!
使用类头文件的简单示例(在单独的 .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.cppg++ 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) 仅包含头文件。只要您坚持这些语义,链接器就会自动为您管理所有这些麻烦。
我希望这有帮助; 如果没有,请考虑改写您的问题或粘贴一些代码。