如何实现不包含 class 名称的 C++ 头文件?
How do I implement a C++ header file that doesn't contain a class name?
编辑:谢谢!我来自 Java,所以事实证明我只是不熟悉自由函数是什么以及它们是如何工作的。感谢大家的回答。
对于一项作业,我获得了一个 C++ 头文件 (.h),其中包含一堆空函数,我需要在单独的 .cpp 文件中实现这些函数,而无需更改原始头文件。但是,头文件中从未提到过明确的 class 或 class 名称——我原以为会有类似
的名称
ClassName
{
... functions, etc...
}
但是什么都没有,只有成员函数。也没有构造器。
因为没有 class 或 class 名称,我不确定使用什么语法来实现 .cpp 文件中的成员函数。通常我会把像
这样的东西放在哪里
returnType ClassName::functionName()
{
...implementation...
}
我不确定要插入什么来代替 ClassName,因为没有 class,或者我是否需要完全使用不同的格式。提前致谢!
C++ 不同于 object-oriented Java 或 C#,它允许自由函数 - 存在于任何 class 之外的函数。看来您的 header 声明正是这样。
简单使用
returnType functionName() //defines a function in current namespace, global or other
{
...implementation...
}
不需要插入class名称,只需要在头文件中正确写入声明的函数签名即可:
file.h
#ifndef HEADER_H
#define HEADER_H
void f ();
void g ();
#endif
file.cpp
#include "file.h"
void f ()
{
}
void g ()
{
}
However, there's no explicit class or class name ever mentioned in the header file
没关系;并非所有内容都需要 class.
而且,如果您的印象是 header 仅用于声明 class-related 事物(因为有些课程倾向于以 class 来命名它们,它们包含的定义),那不是真的! header 可以包含任何内容的声明!一个 class,多个 class,non-class 事物,以上的混合……
there's nothing, just the member functions.
它们不是成员函数;它们只是……功能。
There's also no constructor.
这也行!只有 classes 需要构造函数。
Because there's no class or class name, I'm unsure what syntax to use to implement the member functions in the .cpp file.
函数的简单定义如下:
int foo(…)
{
/* code */
}
…其中 int
是 return 类型,foo
是名称,…
是我的参数占位符(如果适用)。
就是这样!
你的教科书中应该有一章是关于so-called“自由函数”的,可能在classes.
之前
编辑:谢谢!我来自 Java,所以事实证明我只是不熟悉自由函数是什么以及它们是如何工作的。感谢大家的回答。
对于一项作业,我获得了一个 C++ 头文件 (.h),其中包含一堆空函数,我需要在单独的 .cpp 文件中实现这些函数,而无需更改原始头文件。但是,头文件中从未提到过明确的 class 或 class 名称——我原以为会有类似
的名称 ClassName
{
... functions, etc...
}
但是什么都没有,只有成员函数。也没有构造器。
因为没有 class 或 class 名称,我不确定使用什么语法来实现 .cpp 文件中的成员函数。通常我会把像
这样的东西放在哪里 returnType ClassName::functionName()
{
...implementation...
}
我不确定要插入什么来代替 ClassName,因为没有 class,或者我是否需要完全使用不同的格式。提前致谢!
C++ 不同于 object-oriented Java 或 C#,它允许自由函数 - 存在于任何 class 之外的函数。看来您的 header 声明正是这样。
简单使用
returnType functionName() //defines a function in current namespace, global or other
{
...implementation...
}
不需要插入class名称,只需要在头文件中正确写入声明的函数签名即可:
file.h
#ifndef HEADER_H
#define HEADER_H
void f ();
void g ();
#endif
file.cpp
#include "file.h"
void f ()
{
}
void g ()
{
}
However, there's no explicit class or class name ever mentioned in the header file
没关系;并非所有内容都需要 class.
而且,如果您的印象是 header 仅用于声明 class-related 事物(因为有些课程倾向于以 class 来命名它们,它们包含的定义),那不是真的! header 可以包含任何内容的声明!一个 class,多个 class,non-class 事物,以上的混合……
there's nothing, just the member functions.
它们不是成员函数;它们只是……功能。
There's also no constructor.
这也行!只有 classes 需要构造函数。
Because there's no class or class name, I'm unsure what syntax to use to implement the member functions in the .cpp file.
函数的简单定义如下:
int foo(…)
{
/* code */
}
…其中 int
是 return 类型,foo
是名称,…
是我的参数占位符(如果适用)。
就是这样!
你的教科书中应该有一章是关于so-called“自由函数”的,可能在classes.
之前