1

我在 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

有人能帮我吗?

4

1 回答 1

0

如果我正确阅读了您对模型的描述,那么它应该如下所示:

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

我在哪里添加了测试并初始化了变量。

我在这里没有发现任何问题,事实上它也可以在 Overture 中运行,Overture是 VDM 的另一个开源工具套件。我认为您的规范是正确的 VDM。在 Overture IDE 中尝试一下。

于 2012-12-04T19:52:32.610 回答