C++ 让用户创建自己的类实例
我想让我的记录创建程序的用户能够创建他们自己的记录。解决这个问题的最佳方法是什么 我可以使用数组或向量作为变量名吗C++ 让用户创建自己的类实例,c++,arrays,class,vector,C++,Arrays,Class,Vector,我想让我的记录创建程序的用户能够创建他们自己的记录。解决这个问题的最佳方法是什么 我可以使用数组或向量作为变量名吗 int RecU[100]; class Record {...}; int main() { Record RecU[1]; } 我试过了,但我的程序正在崩溃,所以我不确定这是否可行。一个问题是,您有两个关于RecU的定义,它们之间没有任何关系。有一个是全局的,有一个是在main()中定义的,它隐藏了全局的。如果您希望客户端代码能够随意实
int RecU[100];
class Record
{...};
int main()
{
Record RecU[1];
}
我试过了,但我的程序正在崩溃,所以我不确定这是否可行。一个问题是,您有两个关于
RecU
的定义,它们之间没有任何关系。有一个是全局的,有一个是在main()
中定义的,它隐藏了全局的。如果您希望客户端代码能够随意实例化记录
,那么您所要做的就是确保至少有一个构造函数可供它们使用(或工厂方法)。通常情况就是这样。如果您这样声明您的类:
class 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
}
…那么就没有什么可以阻止客户端代码实例化它了。他们可以简单地做到这一点:
int main()
{
Record my_record;
}
在您的OP中,您似乎试图创建一个包含100条记录的数组。你是这样做的:
class 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
}
课堂记录
{
};
静态常量无符号num_记录=100;
记录_记录[num_记录];
int main()
{
for(无符号i=0;i
需要先初始化数组中的每条记录,然后才能使用它:记录[0]=新记录();var firstRecord=RecU.First()@Holystream:它们不是指针。你具体说的“崩溃”是什么意思?这就是你使用的代码吗?你说的“用户”或“创建他们自己的记录”到底是什么意思?哇,哈哈哈。我在想C#程序。我的错。我应该看看C++标签:@戴维T:说ReCu周围的堆栈是腐败的。我的意思是使用类数据类型创建它们自己的变量。我不敢相信我没有看到这一点,我一直忘记类是数据类型,那么你怎么做呢?更好的是,你创建了一个std::vector
@David,是的,我想提一下,但是在我打字的时候忘了!