我正在尝试实现定义为的抽象类“原始”
class Primitive
{
virtual bool intersect(Ray& ray, float* thit, Intersection* in) = 0;
virtual bool intersectP(Ray& ray) = 0;
virtual void getBRDF(LocalGeo& local, BRDF* brdf) = 0;
};
我的问题是 Primitive 包含一个 Method intersect ,它使用 Intersection 类型,定义为
class Intersection
{
LocalGeo localGeo;
Primitive* primitive;
};
Intersection 有一个指向 Primitive 的链接。因此,我无法编译它,因为编译器给出了一个错误,即 Intersection 未定义,因为它出现在 Primitive 定义之后。
问题归结为...
class A
{
void afunc(B *b);
};
class B
{
A *a;
}
有没有办法以这种方式定义类?我试图谷歌,但我不知道谷歌什么。
谢谢