目前我有一个大类Policy
,分别在名为globals.h
和的文件中声明和定义globals.cpp
。除了Policy
类之外,这些文件还包含其他几个使用该类的类和函数Policy
。由于编译时间问题,我现在想将该Policy
类与其他所有内容分开。我希望Policy
在另一个源文件中定义所有其他类和所有函数,这样当我更改Policy
类时,我不必重新编译所有其他类和函数。
但是,当我尝试分离事物时,在尝试使用Policy
该类时出现了很多“字段类型不完整”的错误。我相信他们是由于不正确地使用了#include
语句。
下面我尝试以简单明了的方式模仿我的设置。请注意,还有许多其他源文件也是#include "globals.h"
.
全局变量.h:
#ifndef GLOBALS_H_
#define GLOBALS_H_
class Policy;
class A {
A(std::vector<Policy>);
};
class Policy {
// many member objects and functions declared
};
void func1(Policy&);
void func2(Policy&);
#endif
globals.cpp:
#include "globals.h"
A::A(std:vector<Policy> p) {
// do stuff
}
//
// Define all of Policy's member functions
//
void func1(Policy& p) {
// do stuff
}
void func2(Policy& p) {
// do stuff
}
所以,现在我将讨论我的具体问题(尽管是开放式的,可能是模糊的)......
问题:鉴于我最初有上述设置,并且当我尝试将上面的内容拆分为policy.cpp
and policy.h
, andother.cpp
时other.h
,我遇到了很多“字段类型不完整”的错误,我可能犯了什么样的错误?
我希望对这个问题的回答将帮助我确定在我再次尝试拆分代码之前可以仔细研究的问题。进行更改并遇到错误后,我放弃并恢复到上述原始设置。然而,后来,我决定重新考虑并重新尝试将内容拆分为多个源文件。所以,我没有可以分享的具体问题代码。