我是C ++的新手,我有一个问题:结构的成员是否可以在结构本身之前定义?
像这样:
void foo_t::SayHello() {
printf("Hello,World!\n");
}
struct foo_t {
void SayHello();
};
因为通过使用此功能,我在{C}文件中的struct
和foo.h
函数中拆分了SayHello()
。
修改::
然后将.c
添加到.h
文件的顶部。不在文件末尾。
我很抱歉没有更具体,因为我是C ++新手而且我不了解C ++的用语。
答案 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(); }
};
一个体面的编译器会内联这个,导致没有开销。