可以在struct本身之前定义struct成员(函数)吗?

时间:2013-08-25 15:25:51

标签: c++ function struct

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

像这样:

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

struct foo_t {
    void SayHello();
};

因为通过使用此功能,我在{C}文件中的structfoo.h函数中拆分了SayHello()

修改:: 然后将.c添加到.h文件的顶部。不在文件末尾。

我很抱歉没有更具体,因为我是C ++新手而且我不了解C ++的用语。

2 个答案:

答案 0 :(得分:2)

没有。 (点)

但你可能会这样做:

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

但是:“然后将.c包含在.h文件的顶部。不在文件末尾。” 让我颤抖

答案 1 :(得分:1)

不,但你可以创建一个函数代理:

void foo_t_SayHello() {
    printf("Hello,World!\n");
}

struct foo_t {
    void SayHello() { foo_t_SayHello(); }
};

一个体面的编译器会内联这个,导致没有开销。