Для этого назначения нам не разрешено использовать std :: string.
У меня есть конструктор, который принимает C -строку, смоделированную после цепи ДНК.
DNAStrand::DNAStrand(const char* startingString) {
length = strlen(startingString);
bases = new char[length + 1] {'A','C','G','T',0};
}
Затем я попытался перегрузить логический оператор, который проверял бы созданную мной цепочку, против другой.
bool DNAStrand::operator==(const DNAStrand& other) const {
if (length != other.length)
return false; //can't be the same if we don't have same # items
//Same size, walk through items looking for mismatch
for (int i = 0; i < length; i++) {
if (bases[i] != other.bases[i])
return false;
}
return true; //Must be identical
}
Однако, когда я пытаюсь проверить его, используя приведенную ниже строку кода, isMatch3
возвращает true .
DNAStrand str2("AACC");
bool isMatch3 = (str2 == DNAStrand("AAGC"));
Я почти уверен, что есть проблема с for для l oop, когда он должен перебирать каждый символ в строке C, но я не могу понять, что проблема в том. На мой взгляд, это либо так, либо мой первоначальный конструктор неверен.