如何在C++中的不同类main中传递类的构造函数参数

how to pass a constructor parameter of a class in a different class main in C++

本文关键字:参数 构造函数 main C++ 同类      更新时间:2023-10-16

//Class1主

int main()
{
    ...
    Class1 obj1(parameters);
    Class1 obj2(parameters);    
    Class1 *Array[2];
    Array[0] = obj1;
    Array[1] = obj2;
    Class1 *Pointer = Array;
    Class2 repository(Pointer);   //where the error occurs.
}

obj1和obj2是以前创建的,是class1对象。class2是一个数据存储库类(class2),我正试图将数组传递给它,以便从class2指向它。

#include "Class2.h"
//what Class2 constructor looks like.
Class2::Class2(Class1* Pointer)
{
    tPointer = Pointer;
}

问题是我在说Undefined symbols: "Class2::Class2(Class1*)", referenced from: _main in Class1 ld: symbol(s) not found

如有任何帮助,不胜感激。

您有很多错误,我将向您展示如何修复它们。

int main()
{
    ...
   Class1 obj1(parameters);
   Class1 obj2(parameters);    
   Class1 *Array[2];
   Array[0] = &obj1; // Array holds pointers to Class1, so you need to use &
   Array[1] = &obj2; // Here too.
   Class1 *Pointer = Array[0]; // Use Array[0] or Array[1] here
   Class2 repository(Pointer);   //Should be okay now
}

摘要:

Array[0] = obj1;行中,您忘记了地址运算符(下一行也是如此)。

Class1 *Pointer = Array;没有意义,因为Array本身就是指向指针的指针,您希望Array[0]Array[1]使指针指向obj1或obj2。

好的,有几件事:

1) 数组不是Class1*的类型,而是Class1**的类型
2) 您正在创建一个指针数组,obj1和obj2目前不是指针!动态地分配它们或者使用&操作员获取地址。
3) 这是一个建议:如果可能的话,使用std::vector。使用指针数组可能很痛苦,而且很快就会变得一团糟。
但如果你坚持,那就直接去吧。