Я создал класс с именем DNA, имеющий конструктор без аргументов и две функции-члена, а именно initialize () и show (). Проблема в том, когда я создаю
массив, используя оператор new и вызывая функцию initialize для каждого объекта, используя цикл for, вместо получения другой строки в переменной-члене "genes", я получаю точно такой же набор символов (массив) в genes в каждом объекте в массив. Хотя я инициализирую функцию srand () до инициализации строки, никакого эффекта от нее не видно.
Код ниже.
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
string sampleSpace("ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz");
class DNA {
private:
int length;
char *genes;
public:
DNA() {
length = 0;
genes = new char[length];
}
void initialize(int len) {
srand(unsigned(time(NULL)));
this -> length = len;
delete genes;
this -> genes = new char[length];
for (int i = 0; i < length; i++) {
*(genes + i) = sampleSpace.at(rand() % sampleSpace.length());
}
}
void show() {
for (int i = 0; i < length; i++) {
cout<<*(genes + i);
}
cout<<endl;
}
};
int main() {
DNA *dna = new DNA[10];
DNA *temp = dna;
for (int i = 0; i < 10; i++) {
(*temp).initialize(10);
temp++;
}
temp = dna;
for (int i = 0; i < 10; i++) {
(*temp).show();
temp++;
}
return 0;
}