我想知道是否可以像上面C ++中的代码那样做。 我们的想法是在基类中返回子对象的实例。
public class A
{
private B b;
public A()
{
b = B.GetDefaultB();
}
public A(B _b)
{
b = _b;
}
}
public abstract class B
{
public static B GetDefaultB()
{
return new C();
}
}
public class C : B
{
public C()
{
}
}
我试着做点什么
class A
{
public:
A();
~A();
};
A::A(){}
A::~A(){}
class B
{
public:
B();
static B* GetDefaultB();
virtual ~B() = 0;
};
B::B(){}
B* B::GetDefaultB()
{
return new C();
}
B::~B(){}
class C : public B
{
public:
C();
~C();
};
C::C(){}
C::~C(){}
但我认为包含中有一个循环。 我该怎么办?
提前致谢!
答案 0 :(得分:0)
只需重新排序您的类声明和方法定义:
class A
{
public:
A();
~A();
};
class B
{
public:
B();
static B* GetDefaultB();
virtual ~B() = 0;
};
class C : public B
{
public:
C();
~C();
};
A::A(){}
A::~A(){}
B::B(){}
B* B::GetDefaultB()
{
return new C();
}
C::C(){}
C::~C(){}