C++ CLI Eigen:在 Matrix 中设置值
C++ CLI Eigen: setting values in Matrix
这是我的代码。
Matrix<int, 240, 240>* imagePixels;
for (signed int x = 0; x < 100; ++x)
{
for (signed int y = 0; y < 100; ++y)
{
imagePixels(x,y) = y;
}
}
我想简单地向我的矩阵添加值,但它给了我:
expression preceding parentheses of apparent call must have (pointer-to-) function type
在matrix(x,y) = y;
我正在使用 C++ CLI。
我从来没有用过 Eigen,但我认为它在抱怨 imagePixels
的类型。
Matrix<int, 240, 240>* imagePixels;
(我假设您没有使用任何东西初始化 imagePixels 是网络上的复制粘贴错误,而不是您的实际代码中的错误。)
所有使用 ()
语法访问 Eigen 矩阵对象的示例都使用 class 值类型,而不是指针。在没有 *
的情况下尝试一下,看看是否能为您解决问题。
Matrix<int, 240, 240> imagePixels;
// ^-- No "*"
编辑
好的,所以 imagePixels
是您管理的 class 的成员。托管 classes 只允许包含其他托管 classes、托管句柄 (^
)、非托管指针 (*
) 或基本类型(例如 int)。不允许将非托管 classes 作为值类型。
有两种解决方法:
将 imagePixels
保留为指针,并在每次使用 ()
语法时取消引用它。
(*imagePixels)(x,y) = y;
声明一个非托管结构来将您的矩阵保存为一个值,并在您的 class 中有一个指向它的指针。
struct HolderOfUnmanagedThings { Matrix<int, 240, 240> imagePixels; };
// In your managed class
HolderOfUnmanagedThings* unmanaged = new HolderOfUnmanagedThings();
unmanaged->imagePixels(x,y) = y;
这是我的代码。
Matrix<int, 240, 240>* imagePixels;
for (signed int x = 0; x < 100; ++x)
{
for (signed int y = 0; y < 100; ++y)
{
imagePixels(x,y) = y;
}
}
我想简单地向我的矩阵添加值,但它给了我:
expression preceding parentheses of apparent call must have (pointer-to-) function type
在matrix(x,y) = y;
我正在使用 C++ CLI。
我从来没有用过 Eigen,但我认为它在抱怨 imagePixels
的类型。
Matrix<int, 240, 240>* imagePixels;
(我假设您没有使用任何东西初始化 imagePixels 是网络上的复制粘贴错误,而不是您的实际代码中的错误。)
所有使用 ()
语法访问 Eigen 矩阵对象的示例都使用 class 值类型,而不是指针。在没有 *
的情况下尝试一下,看看是否能为您解决问题。
Matrix<int, 240, 240> imagePixels;
// ^-- No "*"
编辑
好的,所以 imagePixels
是您管理的 class 的成员。托管 classes 只允许包含其他托管 classes、托管句柄 (^
)、非托管指针 (*
) 或基本类型(例如 int)。不允许将非托管 classes 作为值类型。
有两种解决方法:
将
imagePixels
保留为指针,并在每次使用()
语法时取消引用它。(*imagePixels)(x,y) = y;
声明一个非托管结构来将您的矩阵保存为一个值,并在您的 class 中有一个指向它的指针。
struct HolderOfUnmanagedThings { Matrix<int, 240, 240> imagePixels; }; // In your managed class HolderOfUnmanagedThings* unmanaged = new HolderOfUnmanagedThings(); unmanaged->imagePixels(x,y) = y;