我有三个文件。
Wood.cpp
Brick.cpp
Wall.cpp
我的main()
函数在Brick.cpp中:
现在,当我运行项目时,它会抛出className
(在Wall.cpp中)未定义的错误。我该怎么办?
我认为main()
函数在Wall.cpp文件的delaration之前运行。
答案 0 :(得分:1)
你需要一种方法来告诉c ++编译器可用和实现哪些函数,在C ++中使用头文件的方式是:
示例:
档案a.hpp
class A {
// variable members
// function signatures or inline functions
};
档案a.cpp
// Implementation of functions in class A and initialization of static variables in A
档案b.hpp
#include "a.hpp"
// Could use class A
class B {
A m_a_member_variable;
}
文件b.cpp
// Implementation of functions in class B and initialization of static variables in B that could use classes and declarations in a.hpp (ex: class A)
答案 1 :(得分:0)
I think the main() function is run before the delaration of Wall.cpp file.
编译时没有在之前运行。此外,编译顺序由编译器定义。
你需要包含标题(ussualy * .h,* .hpp,* .hh)文件(如果你有一个,否则你必须创建一个),其中className
被定义到源文件中你使用这门课。
对于编译器来说,知道编译源的类的声明(在头部中)就足够了。然后,链接器需要声明。