UrzadzenieElektroniczne - мой абстрактный класс и класс Komputer наследует от него. Я все еще получаю ошибки. Я попытался их исправить, но ни одна из резолюций, которые я нашел в Интернете, не работала. Есть ли проблема с определением и декларации моей виртуальной функции, или я должен искать ошибки где-нибудь еще ?: Ошибки:ошибка LNK2001: неразрешенный внешний символ - при создании абстрактного класса C++
1>CKomputer.obj : error LNK2001: unresolved external symbol "public: virtual void__thiscall Komputer::wlaczenieurz(void)" ([email protected]@@UAEXXZ)
UrzadzenieElektroniczne.h
#pragma once
#include <stdlib.h>
#include <iostream>
#include <string>
using namespace std;
class UrzadzenieElektroniczne
{
public:
int czy_wlaczony;
UrzadzenieElektroniczne();
~UrzadzenieElektroniczne();
virtual void wlaczenieurz() = 0;
private:
protected:
string producent;
};
CKomputer.h
#pragma once
#include <stdlib.h>
#include <iostream>
#include <string>
#include "UrzadzenieElektroniczne.h"
#include "Procesor.h"
#include "KartaDzwiekowa.h"
using namespace std;
class Komputer: public UrzadzenieElektroniczne
{
private:
Procesor procesor;
KartaDzwiekowa *karta_dzwiekowa;
string nazwa_komputera;
int ram;
int ile_kart_dzwiekowych;
public:
void wlaczenieurz();
CKomputer.cpp
#include <iostream>
#include <cstdio>
#include <string>
#include "CKomputer.h"
#include "Procesor.h"
#include "KartaDzwiekowa.h"
void UrzadzenieElektroniczne::wlaczenieurz()
{
if (czy_wlaczony == 0)
cout<<"Komputer wylaczony"<<endl;
if (czy_wlaczony == 1)
cout<<"Komputer wlaczony"<<endl;
}
Но я хочу, чтобы 'wlaczenieurz()' была виртуальной функцией класса UrzadzenieElektroniczne'. – fragon
Вы объявили его чистой виртуальной функцией в 'UrzadzenieElektroniczne'. Это означает, что он должен быть реализован производными классами. Поскольку 'Komputer' является производным классом, он должен реализовать эту функцию. –
Ок. Это была моя ошибка. Я думал, что абстрактный класс должен реализовать виртуальную функцию. Теперь он работает нормально. Благодаря! – fragon