Ошибка в конструкторе VDM++
Я получаю глупую ошибку в VDM++ ToolBox Academic.
Когда я пытаюсь запустить операцию, это дает мне эту ошибку:
Run-Time Error 280: No constructor with this parameter list is in scope
value: "Game"
Мой конструктор:
public Game: Date * Team * Team ==> Game
Game(d,t1,t2) == (
matchday := d;
host := t1;
visitor := t2;
return self;
);
И я называю это здесь:
game := new Game(matchday1day1,groupA.teams(2),groupA.teams(3));
У меня есть это заявление:
public groupA : Group;
public matchday1day1 : Date;
и (в группах):
public teams : seq of Team;
Ошибка указывает на первую букву Game
,
Кто-нибудь может мне помочь?
1 ответ
Если я правильно прочитал ваше описание модели, то оно должно выглядеть так:
class Group
instance variables
public teams : seq of Team := [new Team(),new Team(),new Team()];
end Group
class Team
end Team
class Date
end Date
class Game
instance variables
matchday: Date;
host : Team;
visitor : Team;
operations
public Game: Date * Team * Team ==> Game
Game(d,t1,t2) == (
matchday := d;
host := t1;
visitor := t2;
return self;
);
end Game
class Test
instance variables
public groupA : Group := new Group();
public matchday1day1 : Date := new Date();
operations
public test : ()==>()
test()== (
dcl game : Game;
game := new Game(matchday1day1,groupA.teams(2),groupA.teams(3)) ;
)
end Test
Где я добавил Test и инициализировал переменные.
Я не вижу в этом ничего плохого, на самом деле он также работает в Overture, которая является другим набором инструментов с открытым исходным кодом для VDM. Я думаю, что ваша спецификация является правильной VDM. Попробуйте в увертюре IDE.