Здравствуйте, Аноним, Вы писали:
А> есть файл хедер: А>#pragma once А>class element1{ А>public: А> virtual float GetCurrent(float Potential1, float Potential2,float frequency); А> virtual float GetVoltage(float Current,float frequency); А>};
А>class resistive: public element1{ А>float value_of_resistive; А>resistive(float value); А>};
А>и есть собственно файл с кодом
А>#include "stdafx.h" А>resistive::resistive(float value){value_of_resistive = value;} А>resistive::GetCurrent(float Potential1, float Potential2,float frequency){return 0;}
Здесь еще должно ругаться что нет типа возврата функции (float)
А>float element1::GetCurrent(float Potential1, float Potential2,float frequency){return 0;}; А>float element1::GetVoltage(float Current,float frequency){return 0;};
А>в результате ругается на "resistive::GetCurrent(float Potential1, float Potential2,float frequency){return 0;}" функция не определена в хэдаре, но как я понимаю мы наследуемся от element1 и его функции нам доступны, если они определены как virtual мы можем их переопределить для нового класса...
Да можем, но обязаны сделать объявку в хедере для добавки в vtable
А>и еще если из файла с кодом убрать: А>float element1::GetCurrent(float Potential1, float Potential2,float frequency){return 0;}; А>float element1::GetVoltage(float Current,float frequency){return 0;}; А>то он ругается что функции не определены, хотя ни одного экземпляра данного класса не используется в программе. А> Что я не правильное делаю? или что я не до понимаю?
Правильно ругается ... он же должен знать где находится имплементация витуальных функций базового класса чтобы впихнуть в vtable соответствующий адрес