Почти наверняка ваш код вставки выглядит следующим образом:
bool List::insert(const Patient& newElement)
{
...
elements[someIndex] = newElement;
...
}
Это не помещает newElement
в массив, это присваивает его существующему элементу в массиве (т.е. вызывает Patient::operator=
).
Таким образом, они являются двумя отдельными объектами. Изменение того, что находится вне массива, не влияет на то, что входит в массив, и наоборот.
В List
может потребоваться что-то, что может вернуть ссылку на один из объектов массива, чтобы позволить вам изменить его. Например,
Patient& List::operator[](size_t index)
{
//<test here to make sure index is in range>
return elements[index];
}
Это позволит вам сделать что-то вроде:
Patient& pat = theList[0];
pat.setEmail("test@email.com");
и элемент в массиве покажет это изменение.
И / или, я неправильно читаю, а вы просто неправильно реализовали operator=
.
Я разработал и реализовал Zend_Filter_Input
назад в 2007.
Можно добавить новые префиксы класса, чтобы помочь загрузить пользовательский фильтр и классы блока проверки допустимости. По умолчанию, Zend_Filter_Input
поиски классов, которые имеют префиксы "Zend_Filter"
и "Zend_Validate"
. Попробуйте это:
$inputFilter->addNamespace('Core_Filter');
Перед выполнением isValid()
или другие методы объекта.
С другой стороны, можно также передать новую строку префиксов класса в массиве options, четвертом аргументе к Zend_Filter_Input
конструктор:
$options = array('inputNamespace' => 'Core_Filter');
$inputFilter = new Zend_Filter_Input($filters, $validators, $data, $options);
См. также документацию, для которой я записал Zend_Filter_Input
.