Tôi muốn chuyển tiếp khai báo một hàm thành viên tĩnh của một lớp trong tệp khác. Những gì tôi muốn làm trông như thế này:chuyển tiếp khai báo hàm tĩnh C++
BigMassiveHeader.h:
class foo
{
static void init_foos();
}
main.cpp:
class foo;
void foo::init_foos();
int main(char** argv, int argc)
{
foo::init_foos()
}
này thất bại với "lỗi C2027: sử dụng các loại không xác định 'foo' "
Có cách nào để thực hiện những gì tôi muốn làm với việc làm init_foos một chức năng miễn phí, hoặc bao gồm BigMassiveHeader.h? (BigMassiveHeader.h là thời gian biên dịch đáng chú ý, và được bao gồm ở mọi nơi.)
Cho dù để bao gồm mã trong các .cpp hoặc trong BigHeader.h không nên có hiệu lực. Sau khi tất cả, bạn đang sử dụng #include bảo vệ hoặC#pragma một lần vì vậy BigHeader.h chỉ được biên dịch một lần, phải không? – Kyte
@Kyte Bao gồm các nhân viên bảo vệ giới hạn BigHeader.h một lần cho mỗi đơn vị dịch mà nó được bao gồm. Nếu nó đang được bao gồm trong nhiều tập tin nguồn, nó sẽ cần phải được biên dịch nhiều lần. – KeithB
Vì vậy, nó sẽ có thể tách ra định nghĩa của 'lớp foo' vào một tập tin tiêu đề? –