позволить пользователю создавать свои собственные экземпляры класса - PullRequest
1 голос
/ 20 ноября 2010

Я хочу сделать так, чтобы пользователь моей программы создания записей мог создавать свои собственные записи. Каков наилучший способ справиться с этим?

Могу ли я использовать массив или вектор для имени переменной?

 int RecU[100]; 

 class Record 
   {...};

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

Я попробовал, и моя программа падает, поэтому я не уверен, возможно ли это.

Ответы [ 2 ]

1 голос
/ 20 ноября 2010

Если вы хотите, чтобы клиентский код мог создавать экземпляр Record по желанию, все, что вам нужно сделать, это убедиться, что им доступен хотя бы один конструктор (или метод фабрики).Обычно это так.Если вы объявите свой класс следующим образом:

class Record 
{
};

... тогда ничто не помешает клиентскому коду создать его экземпляр.Они могут просто сделать это:

int main()
{
  Record my_record;
}

В вашем ОП выглядело, как будто вы пытались создать массив 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
}
1 голос
/ 20 ноября 2010

Одна проблема заключается в том, что у вас есть два определения RecU, которые не имеют ничего общего друг с другом. Это глобальная и определенная в main(), которая скрывает глобальную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...