结构成员(函数)是否可以在结构本身之前定义

Can a struct member(function) be defined before struct itself?

本文关键字:结构 定义 成员 函数 是否      更新时间:2023-10-16

我是C++的新手,我有一个问题:作为函数的结构的成员可以在结构本身之前定义吗?

像这样:

void foo_t::SayHello() {
    printf("Hello,World!n");
}
struct foo_t {
    void SayHello();
};

因为通过使用此函数,我将struct拆分为foo.h,将SayHello()拆分为C文件。

编辑::然后将.c包含在.h文件的顶部。不在文件末尾。

我很抱歉没有更具体,因为我是C++的新手,我不知道C++的术语。

否。(点)

但你可以这样做:

class foo_t;
void say_hello(const foo_t& foo) // defined in a source
struct foo_t {
    void SayHello() const { say_hello(*this); }
};

但是:"然后在.h文件的顶部包含.c。而不是在文件的末尾。"让我不寒而栗

没有,但您可以制作一个函数代理:

void foo_t_SayHello() {
    printf("Hello,World!n");
}
struct foo_t {
    void SayHello() { foo_t_SayHello(); }
};

一个好的编译器会内联这个,不会产生任何开销。