şekil şeklinde bir soyut dersim var.Bir soyut veri tipinin parametresi nasıl bulunur?
class Shape{
public:
virtual const ColorRGB getColor() const;
virtual double rayIntersectionDistance(Ray r) = 0;
};
Ve şimdi Şekli aşağıdaki sınıfları türetilen ettik.
class Sphere: public Shape { //implementation goes here }
class Plane: public Shape { //implementation goes here }
-
() ve
rayIntersectionDistance (Ray r) bu sınıflara özgü ek yöntemler ile her iki sınıfları içinde yöntem. Şimdi Yani
, Sahne adında başka bir sınıfta, içinde, bir ) ( yöntemini hale ettik ve bu en prototipidir:
void render(int width, int height, Shape s);
Ve bu çalışmıyor gibi görünüyor, derleyici olduğunu şikayetçi bana:
error: cannot declare parameter 's' to be of abstract type 'Shape'
Bunu nasıl yapabilirim? Bunu başarmanın daha iyi bir yolu ne olurdu?
' func4, 'func5 (Shared_ptr)' ... ;-) –
Barry
@barry bir olağandışı olurdu beraberlik işlevine unique_ptr taşındı geçen adil olmak. @Peter Muhtemelen func() 'veya' func2() 'yi teşvik etmem. çok kötüye giden yol ... 'func3()' bir tanesidir. –
@Barry - yes. Ayrıca, bu türün kendi durumunu uygun şekilde yönetmesi koşuluyla, bir işaretçi veya "Şekil" referansını içeren herhangi bir türün - bahsettiğiniz gibi akıllı işaretçi türleri de dahil olmak üzere - iletilmesi de mümkündür. – Peter