基本C - 构造contaning对象引用,并将其作为方法参数传递

Basic C++ - struct contaning object references and pass as method parameter

本文关键字:参数传递 方法 构造 contaning 对象引用 基本      更新时间:2023-10-16

我习惯了C#和MATLAB,我正在尝试使用线性代数的EIGEN模板库进行简单的C 程序。

对不起,但是我在基础上挣扎

  • 在struct in Struct
  • 中存储Matrix3d eigen
  • 将参数传递给方法
  • 返回一个包含特征对象参考的结构。

示例代码(不是编译,C#在此处痛苦中的开发人员):

struct MyStruct
{
    Matrix3d* K1; //Is that the right way, using pointers?
    Matrix3d* K2;
};
int main()
{
    //Case 1
    MyStruct* A = new MyStruct();
    A->K1 = &(Matrix3d)Matrix3d::Random();
    MyStruct* result = MyMethod(A);
    //Case 2 - I noticed that everybody uses case 1, what is the difference? 
    MyStruct B;
    B.K1 = &(Matrix3d)Matrix3d::Random();
    B.K1(0,0) = 1; // Not working. How can I access it?
    MyStruct* result = MyMethod(&B);
}
*MyStruct DoSomething(MyStruct& input)
{
    MyStruct result;
    result.K1 = ...
    return &result;
}

不熟悉特征。但是我可以在C 中给您一些有关编程的一般建议。

  • 在struct in Struct
  • 中存储Matrix3d eigen

如果您需要分配Matrix3D对象,我建议您在结构或类的构造函数和驱动器中进行资源管理。

还尝试使用智能指针 c type pointer。

参考:raii。

  • 将参数传递给方法

通常更喜欢通过参考(如果可以的话)通过参考(或const参考)。

  • 返回一个包含特征对象参考的结构。

返回值确实取决于。如果您仅在输入参考上进行修改,则可能不需要返回值,也可以在Mystruct对象小时按值返回。

正如评论所说,

总的来说,您需要C 中资源管理的基本思想和实施方式。您可能想找到一些书籍并学习这些主题。