Ошибка WTF C #: «Semestralwork.Teleport» не содержит конструктор, который принимает 2 аргумента; Телепорт имеет 2 аргумента - PullRequest
0 голосов
/ 06 января 2012

«смешная» вещь произошла:Примечание: Vector3 - это координаты struct 3xfloat x, y, z

class Teleport {

        Vector3 currentPosition;
        Vector3 destinationPosition;

        Teleport(Vector3 currentPosition, Vector3 destinationPosition) 
        {
            this.currentPositon = currentPositon;
            this.destinationPosition = destinationPosition;

            //...
        }
}

Когда я приведу этот код из другого класса, у нас возникнет проблема:Примечание: массивы teleportPositions и destinationPositions имеют тип Vector3 [] и не являются пустыми

Teleport[] teleportList = new Teleport[NUMBER_OF_TELEPORTS]

 for (int i = 0; i < NUMBER_OF_TELEPORTS; i++) 
            {
                Vector3 actual = teleportPositons[i];
                Vector3 dest = destinatonPositions[i];
                teleportList[i] = new Teleport(actual,dest); //there is the problem
            }

Visual Studio сообщает: 'Semestralwork.Teleport' не содержит конструктор, который принимает 2 аргумента.Семестральная работа - это пространство имен, все классы находятся в этом пространстве имен.Я не понимаю этого, но я могу сосчитать до двух: /

Кто-нибудь сейчас?Спасибо.

Ответы [ 2 ]

2 голосов
/ 06 января 2012

Модификатор доступа по умолчанию для конструктора перечисляет его как приватный, что означает, что к нему можно получить доступ только из класса Teleport.Вы хотите, чтобы оно было public (или internal, которое по существу было бы основано на модификаторе доступа класса, по умолчанию равном internal), следующим образом:

class Teleport {
    public Teleport(Vector3 currentPosition, Vector3 destinationPosition) 
    {
        //...
    }
}
1 голос
/ 06 января 2012

На самом деле, я думаю, что ваша проблема заключается в следующей строке:

Vector3 teleportList = new Teleport[NUMBER_OF_TELEPORTS]

Вы создали переменную с именем teleportList типа Vector3, и вы пытаетесь создать ее экземпляр как массив Teleportобъекты.

Не должно ли быть:

Teleport[] teleportList = new Teleport[NUMBER_OF_TELEPORTS];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...