让用户创建自己的类实例

时间:2010-11-19 21:31:09

标签: c++ arrays class vector

我想让它成为我的Record创建程序的用户可以创建自己的记录。解决这个问题的最佳方法是什么?

我可以使用数组或向量作为变量名吗?

 int RecU[100]; 

 class Record 
   {...};

 int main()
   {
   Record RecU[1]; 
   }

我试过了,我的程序崩溃了,所以我不确定它是否可能。

2 个答案:

答案 0 :(得分:1)

一个问题是你有RecU的两个定义,它们彼此无关。有全局的,main()中定义的那个隐藏了全局的那个。

答案 1 :(得分:1)

如果您希望客户端代码能够随意实例化Record,那么您所要做的就是确保至少有一个构造函数可用(或工厂方法)。通常情况就是如此。如果你宣布你的班级是这样的:

class Record 
{
};

...然后没有什么可以防止客户端代码实例化它。他们可以简单地这样做:

int main()
{
  Record my_record;
}

在您的OP中,看起来您正在尝试创建一个包含100 Record个数组的数组。你这样做:

class Record 
{
};

static const unsigned num_records = 100;

Record the_records[num_records];

int main()
{
  for( unsigned i = 0; i < num_records; ++i )
    Record& that_record = the_records[i];  // 'that_record' is a ref to one of the records
}