2015-08-26 2 views
0

У меня есть два класса, и один наследуется от другого.Проблемы с вызовом дочернего конструктора с использованием C# в XNA


Partition

class Partition 
{ 
    protected Vector3 midpoint 
    protected float radius 

    public Partition(Vector3 midpoint, float radius) 
    {  
     this.midpoint = midpoint;   
     this.radius = radius; 
    } 
} 

PartitionSegment

class PartitionSegment : Partition 
{ 
    protected Vector3 midpoint 
    protected float radius 

    public PartitionSegment(Vector3 midpoint, float radius) 
    {  
     this.midpoint = midpoint;   
     this.radius = radius; 
    } 
} 

Я быть помечено для ошибка в PartitionSegment, для его конструктора.

PartitionJunction .PartitionJunction (Vector3 MidPoint, поплавка радиус)

Там не аргумент, учитывая, что соответствует требуемому параметру 'MidPoint' от «Partition.Partition (Vector3, с плавающей точкой) '

Что я делаю неправильно?

+0

Вы не вызываете конструктор базового класса. – Amy

+0

Почему дочерний класс дублирует поля родителя? –

+0

Либо можно было бы вызвать прямой вызов для создания элемента, а для определения позиции в игровом мире необходимы координаты для сортировки. – Gnemlock

ответ

3

Вспоминая мои старые дни разработки C#, вам не нужно писать? :

public PartitionSegment(Vector3 midpoint, float radius) : base(midpoint, radius) 
{ } 
+0

Простое решение. Похоже, моя проблема заключается в незнании с функцией base(), но я думаю, что это другой вопрос в другое время. – Gnemlock

2

Вы можете использовать базовый конструктор.

public PartitionSegment(Vector3 midpoint, float radius) : base(midpoint, radius) 
{  
    //additional relevant code 
} 
1

, предоставляющий вашему базовому классу разделов параметр, меньший конструктор по умолчанию, также избавится от вашего сообщения об ошибке.

+0

Это, безусловно, было бы, но в этом приложении оба должны обрабатывать параметры. – Gnemlock

Смежные вопросы