ECLiPSe 使用 C++ 接口创建 2D 矩阵

问题描述 投票:0回答:1

我有一个谓词,用于在 Eclipse 中初始化 2D 矩阵:

problem(1, [](
        [](1,2,3,4),
        [](1,2,4,3),
        [](1,3,2,4),
    )
).

我想使用 C++ 程序与 Eclipse 谓词集进行交互,因此我需要一种方法来从 C++ 创建具有任意值和维度的矩阵。我可以创建一个一维矩阵

EC_functor matrix4("[]", 4);
EC_word r1 = term(matrix4, 1, 2, 3, 4);
EC_word r2 = term(matrix4, 1, 2, 4, 3);
EC_word r3 = term(matrix4, 1, 3, 2, 4);

这不会导致任何明显的问题,但是当我尝试将它们打包到二维矩阵中时,它会产生错误并终止:

EC_functor matrix3("[]", 3);
EC_word table = term(matrix3, r1, r2, r3);
non-atomic initializer in ecl_refs_create()

如何在 C++ 中创建 2D 矩阵并将其作为复合项参数传递?

(我在 https://www.eclipseclp.org/doc/exampleshttps://eclipseclp.org/doc/embedding.pdf 中找不到任何示例)

c++ prolog eclipse-clp
1个回答
0
投票

这个问题意外地没有包含在我的问题示例中,而是将

term
返回的对象类型从
EC_ref
更改为
EC_word

我对 https://eclipseclp.org/doc/embedding.pdf#page=19 似乎指的是类型之间的可互换性感到困惑。

© www.soinside.com 2019 - 2024. All rights reserved.