如何在C++中的不同类main中传递类的构造函数参数
how to pass a constructor parameter of a class in a different class main in C++
//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。使用指针数组可能很痛苦,而且很快就会变得一团糟。
但如果你坚持,那就直接去吧。
相关文章:
- C++:使用运算符 = 调用多参数构造函数
- 通过零参数构造函数创建的 glm::mat4 应该包含哪些值?
- 好奇的混合与可变参数构造函数
- 具有默认值的单个参数构造函数是否与默认构造函数相同?
- 为什么我们需要创建一个单参数构造函数来使用临时的无名称对象
- 在可变参数构造函数中初始化常量数组
- C++ 显式多参数构造函数歧义
- 零一参数构造函数
- 可变参数构造函数中的 SFINAE
- 当没有显式关键字与单参数构造函数一起使用时,编译器可以发出警告
- 可变参数类模板和可变参数构造函数
- 确保模板参数类型与其可变参数构造函数的类型匹配
- C++默认参数构造函数与内联初始化优先级
- 如何在 c++ 中将包含复制构造函数的类的参数构造函数称为私有?
- 自动存储中没有无参数构造函数的类对象和异常
- 警告:用两个参数构造函数返回对象时,表达结果未使用
- 如何在C++中调用无参数构造函数
- 在 c++ 中具有多个参数构造函数的模板类存在问题
- 可变参数构造函数优先于用户提供的移动构造函数,除非默认
- 如何从可变参数构造函数参数构造任何对象?