Вы не определили вашего конструктора или деструктора, вы только что объявили их.
Любая функция, используемая в вашей программе, должна быть где-то определена. Определение функции состоит из объявления функции, за которым следует ее определение. Например, ваша multiplication
функция-член определена:
float multiplication() { return x * y; }
^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^
function declaration this makes the declaration a definition
Ошибка «неразрешенный внешний символ» означает, что компилятор нашел объявление функции, но компоновщик не смог найти определение. Итак, вам нужно предоставить определения для двух функций, отмеченных компоновщиком: конструктор по умолчанию и деструктор, который вы объявили.
Тем не менее, обратите внимание, что если вы не объявляете никаких конструкторов, компилятор неявно предоставит конструктор по умолчанию для вашего класса, чего часто достаточно. Если вы не объявите деструктор, компилятор неявно предоставит деструктор. Поэтому, если вам действительно не нужно что-то делать в конструкторе или деструкторе, вам не нужно объявлять и определять их самостоятельно.
Убедитесь, что у вас есть хорошая вводная книга по C ++ . В такой книге будет более подробно рассказано о том, как определяются функции-члены, и о лучших практиках написания конструкторов и деструкторов (правильное написание деструктора чревато опасностями).