2013-08-25 104 views
0

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

像这样:

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

struct foo_t { 
    void SayHello(); 
}; 

因为使用这个我在C文件中foo.hSayHello()功能拆分struct

编辑:: ,然后再向.h文件的顶部.c。不在文件结尾。

对不起,因为我不熟悉C++的术语,因此不要更具体。

+0

为什么你需要这样做? –

+1

在头文件中包含一个.c文件通常不是一个好主意 – bennofs

+0

是不是在函数体定义的C文件中,在头文件中是原型? –

回答

2

号(点)

但你可能会做“,然后再向.h文件中的顶部.C不在文件的末尾。 “ 让我发抖

+0

是不是在函数体定义的C文件中,在头文件中是原型? –

+0

@TheMask - 通常类的代码由两个文件组成:一个包含类定义(以及任何内联成员函数的定义)的**头**和一个**源**文件,其中包含(非内联)成员函数。当您构建一个应用程序时,您可以分别编译每个源文件,然后**将生成的目标文件链接在一起。 –

1

没有,但你可以做一个函数代理:

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

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

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

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

+0

感谢您的建议。但是,我会继续在头文件的末尾使用'.c' ... –

相关问题