Witam,
wlaśnie wykonuje program wykorzystujący funkcje wirtualne z 6 odc kursu programowania obiektoweg. Mianowice chciałem zmodyfikować program tak aby wszystko nie znajdowało się w jednym pliku cpp tylko aby byl plik .h oraz dwa .cpp jednen z klasami drugi z mainem. Po kompilacji wyskakuje mi oto taki komunikat error C2011: 'Kolo': 'class' type redefinition. Dodam jeszcze że korzystam z Visual Studio 2017.
//Main
#include "stdafx.h"
#include <iostream>
#include "Ksztaltt.h"
void obliczenia(Ksztalt *x)
{
x->oblicz_pole();
}
int main()
{
Kolo k(3);
Kwadrat kw(5);
Ksztalt *wsk;
wsk = &k;
obliczenia(wsk);
wsk = &kw;
obliczenia(wsk);
system("pause");
return 0;
}
// Ksztaltt.cpp
#include "stdafx.h"
#include "Ksztaltt.h"
#include <iostream>
class Kolo
{
private:
float r;
public:
Kolo(float x)
{
r = x;
}
virtual void oblicz_pole()
{
std::cout << "Pole kola: " << 3.14*r*r << "\n\n";
}
};
class Kwadrat
{
private:
float a;
public:
Kwadrat(float x)
{
a = x;
}
virtual void oblicz_pole()
{
std::cout << "Pole kwadratu: " << a * a << "\n\n";
}
};
// Ksztaltt.h
#pragma once
class Ksztalt
{
public:
virtual void oblicz_pole() = 0;
};
class Kolo :public Ksztalt
{
private:
float r;
public:
Kolo(float x);
virtual void oblicz_pole();
};
class Kwadrat :public Ksztalt
{
private:
float a;
public:
Kwadrat(float x);
virtual void oblicz_pole();
};