我有多个嵌套类,我想在单独的头文件中声明主类之外,因为嵌套类非常长。
这就是我想要做的事情:
class MainClass {
private:
classA;
classB;
classC;
//and so on
public:
method(C.var) {//code}
问题是我不断获得Error:incomplete type not allowed.
,因为这些课程没有被定义"。除了将所有代码放在MainClass
?
真实代码:
class Graph //fix subclass issues
{
private:
template <class TYPE> class * linkedList;
template <class TYPE> class * chainingTable;
class * minHeap;
class * vertex;
class * edge;
chainingTable<vertex*> vertexList;
vertex * findVertex(int addrs) { return vertexList.findVertex(addrs); }
int weight(vertex *v, vertex *u) { return v->weight + u->weight; }
void relax(vertex * v, vertex * u,int i, minHeap h)
{
if(v->weight > u->weight+weight(v,u))
{
v->weight = v->weight + weight(v,u);
h.decreaseKey(i, v->weight); //fixes heap
v->predecessor = u;
}
}
public:
void addVertex(int cost, int address)
{ vertexList.insert(new vertex(cost, address)); } //and the class continues
现在有了这些变化,我得到了Error: expected either a definition or tag name
编辑:添加了所请求的实际代码,并添加了更新的错误
答案 0 :(得分:1)
改为使用指向这些类的指针。
function apply(func, thisArg, args) {
switch (args.length) {
case 0: return func.call(thisArg);
case 1: return func.call(thisArg, args[0]);
case 2: return func.call(thisArg, args[0], args[1]);
case 3: return func.call(thisArg, args[0], args[1], args[2]);
}
return func.apply(thisArg, args);
}
仅在.cpp文件中定义您的方法。
要了解发生了什么,在定义类时,编译器必须知道该类的对象有多大。如果您定义尚未完全定义的成员,则编译器没有关于这些类的大小的信息,因此它将无法计算此类的对象的大小。
但是,指针的大小始终相同(32位为4个字节,64位为8个字节),然后可以计算该类对象的大小。
ps:请注意,您不应在.h文件(头文件)中定义方法。头文件只应该有类的声明,而.cpp文件有它们的实现。
e.g: 部首:
apply()
具有实现的构造函数
classA *objectA;
classB *objectB;
classC *objectC;