下面我编写了一个示例程序,我已经编写过这个程序来学习如何将对象列表传递给另一个类。我在下面讨论我遇到的问题。
#include <iostream>
#include <vector>
using namespace std;
class Integer_Class
{
int var;
public:
Integer_Class(const int& varin) : var(varin) {}
int get_var() { return var; }
};
class Contains_List
{
typedef Integer_Class* Integer_Class_Star;
Integer_Class_Star list;
public:
Contains_List(const Integer_Class_Star& listin) : list(listin) {}
Integer_Class* get_list() { return list; }
};
int main (int argc, char * const argv[])
{
// Create a vector to contain a list of integers.
vector<Integer_Class> list;
for(int i = 0; i < 10; i++)
{
Integer_Class temp_int(i);
list.push_back(temp_int);
}
这是错误开始发生的地方。有人可以看看下面的第二类定义和下面的代码,并阐明我做错了什么。非常感谢你,一如既往!
// Import this list as an object into another object.
Contains_List final(list);
// Output the elements of the list by accessing it through the secondary object.
for(int i = 0; i < 10; i++)
{
cout << final.get_list()[i].get_var();
}
return 0;
}
答案 0 :(得分:2)
你没有提到你会得到什么样的错误,但你的代码的一个非常明显的问题是Contains_List
的构造函数需要指向Integer_Class
的指针,而你发送它的参数(list
)的类型为vector<Integer_Class>
。
向量与数组不同,因此您不能将其作为指向它所包含类型的指针传递。更改构造函数以接受向量或指向/向量的引用,或更改导致问题的代码,以便向它发送指向数组的指针。
答案 1 :(得分:0)
'Contains_List'构造函数接受'Integer_Class *'
您将'list'声明为'vector'类型,但您将其传递给'Contians_List'构造函数。您应该更改'Contains_List'类,使其包含向量而不是Integer_List数组。这两者不可互换。
如果您愿意,也可以将矢量更改为Integer_List的数组。