将对象列表传递给另一个类C ++的问题

时间:2009-05-11 22:50:28

标签: c++

下面我编写了一个示例程序,我已经编写过这个程序来学习如何将对象列表传递给另一个类。我在下面讨论我遇到的问题。

#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;
}

2 个答案:

答案 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的数组。