【发布时间】:2012-07-15 04:20:10
【问题描述】:
任务.h:
#ifndef Tasks_h
#define Tasks_h
#include "Executors.h"
class Task
{
Executor *current_executor;
};
#endif Tasks_h
Executor.h:
#ifndef Executors_h
#define Executors_h
#include "Tasks.h"
class Executor
{
Task *current_task;
};
#endif Executors_h
main.cpp:
#include <conio.h>
#include <stdio.h>
#include "Tasks.h"
#include "Executors.h"
int main()
{
Executor ex;
return 0;
}
编译错误:
Error 1 error C2146: syntax error : missing ';' before identifier 'current_task' c:\users\rain\documents\visual studio 2010\projects\text\text\executors.h 8
Error 2 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\users\rain\documents\visual studio 2010\projects\text\text\executors.h 8
Error 3 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\users\rain\documents\visual studio 2010\projects\text\text\executors.h 8
再次...在 C# 中我永远不会遇到这样的问题,但我会尽力支持 C++ 并使用它。
不想在一个头文件中编写所有类
【问题讨论】:
-
代码没有意义。
Executor对象包含Task对象,而Executor对象又包含Executor对象。所以它是对象的无限递归。 -
就目前而言,您有两个包含彼此实例的类,这显然是不可能的。你需要使用引用或指针来做这种事情。
-
我知道,这只是一个例子。可能会有指针。编辑使用指针的主要问题