我在VDM++ ToolBox学术上遇到了一个愚蠢的错误。
当我试图运行一个操作时,它给出了这个错误:
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的第一个字母。
有人能帮我吗?
发布于 2012-12-05 03:52:33
如果我没看错你对模型的描述,那么它应该是这样的:
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。在Overture IDE中尝试一下。
https://stackoverflow.com/questions/13685863
复制相似问题