2
私のように定義された型Primary_Taskからプライマリと呼ばれる親にリンクされたタスクのプロパティを持つエイダ2005年のクラスTest_Class
、持っている:私は造る必要建設
type Test_Class is tagged limited
record
Info : Integer;
Value : Float;
Primary : Primary_Task (Test_Class'Access);
end record;
をフォームでの私のクラスのためのワンステップコンストラクタ
function Construct (T : access Test_Class) return Test_Class_Ptr is
begin
return new Test_Class'(Info => T.Info + 1,
Value => 0.0,
Primary => [WHAT I WANNA KNOW]);
end Construct;
現在、私のコードは次のとおりです。
-- test_pkg.ads
package Test_Pkg is
type Test_Class;
type Test_Class_Ptr is access all Test_Class;
task type Primary_Task (This_Test : access Test_Class) is
pragma Storage_Size (1000);
end Primary_Task;
type Test_Class is tagged limited
record
Info : Integer;
Value : Float;
Primary : Primary_Task (Test_Class'Access);
end record;
function Construct (T : access Test_Class) return Test_Class_Ptr;
end Test_Pkg;
-- test_pkg.adb
with Text_IO; use Text_IO;
package body Test_Pkg is
[...]
function Construct (T : access Test_Class) return Test_Class_Ptr is
T_Ptr : constant Test_Class_Ptr := new Test_Class;
begin
T_Ptr.Info := T.Info + 1;
T_Ptr.Value := 0.0;
return T_Ptr;
end Construct;
end Test_Pkg;
どうすればコード化できますか? Primary => [...]
コードにはどうすればよいですか? Test_Class
定義のPrimary : Primary_Task (Test_Class'Access);
の定義を変更する必要がありますか?
あなたは達成しようとしていることに関するさらに詳しい情報を提供できますか?あなたはこれを読んだことがありますか:http://en.wikibooks.org/wiki/Ada_Programming/Tasking – NWS
私はcomp.lang.adaで答えを待つべきではないかと思います(もちろん、その逆もあります)!ランディブルカートの答えは良かった。 –
@SimonWright、Randyが正しいと思います。質問をする前に私はこの同じ解決策を使用しようとしました(これはあなたがcomp.lang.adaで前に私にいくつかの投稿を与えたようなものです)。しかし、問題は幸いにもコードではありませんでした。今、私はこの問題がGPL 2011バージョンのGNAT BUGかもしれないことに気付きました。自宅で私はGPLコンパイラを使っているだけなので、以前は成功することはできませんでした。しかし、おそらくgnatproはそれをクリアし、テストするつもりです。ありがとうございました。 – Rego