Как уже указывалось другими, вам нужно переместить определение встроенной функции в заголовочный файл, например:
class NeedleUSsim
{
// ...
inline int GetTplLSize() { return sampleDim[1]; }
// ...
};
. Причина этого заключается в том, что компилятор должен знать, что код в строке, когда он видит вызов встроенной функции. Если вы оставите определение функции в файле .cpp для класса NeedleUSsim, код, созданный для него компилятором, попадает в ловушку в объектном файле NeedleUSsim. Поскольку компилятор только читает исходный код & mdash, он никогда не заглядывает в объектный файл другого класса - он просто не знает, с каким кодом заменить вызов, когда он компилирует другой .cpp-файл.
Атомарность - транзакция по переводу средств с одного счета на другой включает в себя операцию снятия с первого счета и операцию пополнения на втором. Если операция внесения депозита завершилась неудачно, вы также не хотите, чтобы операция снятия средств происходила.
Согласованность - база данных, отслеживающая текущий счет, может допускать наличие только уникальных номеров чеков для каждой транзакции
Изоляция - кассир, просматривающий баланс, должен быть изолирован от параллельной транзакции, связанной со снятием средств с того же счета. Только когда транзакция снятия средств завершится успешно и кассир снова посмотрит на баланс, появится отчет о новом балансе.
Долговечность - Не допускается сбой системы или любой другой сбой, который приведет к потере результатов транзакции или содержимое базы данных.
Возьмите любой заданный скрипт Perl, который вы используете для управления данными в реляционной базе данных, поместите «BEGIN» вверху и «COMMIT» внизу, и вы знаете perl script работал или вообще не повлиял на вашу базу данных (если вы не вставили операторы DDL в mysql). Атомарность очень важна для получения такой гарантии при разработке надежного программного обеспечения (и моего любимого свойства).