C++ Class Files
C++ Class Files
我在学习使用文件进行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) 仅包含头文件。只要您坚持这些语义,链接器就应该自动为您管理所有这些麻烦。
我希望这有帮助;如果没有,请考虑改写您的问题或粘贴一些代码。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- "Undefined class"作为is_base_of的论据
- 如何将class.cpp和class.hpp编译为一个.o文件
- '{'标记之前的预期类名,然后在预声明时无效使用不完整的类型'class class_name'
- 如何使用"derived input class"创建派生类?
- 错误:"Left of getValue must have class/struct/union"
- ' class a : b ' 和 ' class a : public b ' 之间的继承类不同
- Pybind11 Class Definition
- 在C++中使用没有合作伙伴Class/Cpp文件的头文件是否实用
- C2011 'CMemDC':Visual Studio 2019中的'class'类型重新定义
- TypeError: [c++ addon class] 不是构造函数
- C++ class template
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- Clearing Class Foo with new(pFoo) Foo()
- C++ class vs a library
- 继承类时"invalid use of incomplete type ‘class tree_node_t’"
- 使用"class"关键字,后跟未声明的标识符
- C++ Class Files