Błąd R6010 podczas dziedziczenia.

0

Witam, otóż mój kod wygląda tak:

// ConsoleApplication13.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>
#include <iomanip>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <string>
#include <list>
#include <algorithm>
#include <initializer_list>
#include <vector>
#include <iterator>

using namespace std;


int proba = 0;
int g = 0;
int zmiennadokonstruktora = 0;
string tablicadokonstruktora[40];
float zmienna[10];
int zmienna2[10], zmienna5[10];
string zmienna3[10], zmienna4[10];


class Produkt{
public:
	float cena;
	string nazwa;
	int miara;
	string jednostka;

	Produkt(string nazwa, float cena, int miara, string jednostka);
	//void DodajProdukt();
};


Produkt::Produkt(string nazwa, float cena, int miara, string jednostka)
{
	tablicadokonstruktora[zmiennadokonstruktora] = nazwa;
	zmiennadokonstruktora = zmiennadokonstruktora + 1;
	this->nazwa = nazwa;
	this->cena = cena;
	this->miara = miara;
	this->jednostka = jednostka;
};


class Konkretny_produkt : public Produkt{
public:
	float nowa_miara;
	Konkretny_produkt(float nowa_miara, Produkt lol);
};

Konkretny_produkt::Konkretny_produkt(float nowa_miara, Produkt lol)
:Produkt(nazwa, cena, miara, jednostka)
{
	this->nazwa = lol.nazwa;
	this->nowa_miara = nowa_miara;
	this->miara = lol.miara;
	this->jednostka = lol.jednostka;
	this->cena = lol.cena;
};


int _tmain(int argc, _TCHAR* argv[])
{


	Produkt maka("maka", 1.99, 1000, "gram");
	cout << maka.nazwa << " " << maka.cena << " " << maka.miara << endl;




	return 0;
}

I wszystko jest dobrze, lecz jak w mainie dopiszę:

Konkretny_produkt(250, maka)

To podczas uruchamiania programu pojawia mi się komunikat z błędem: R6010 abort() has been called. Co robię nie tak? :/

1
#include <iostream>
#include <string>

class Produkt
{
public:
	Produkt(std::string const& nazwa, double cena, int ile, std::string const& jednostka) :
		nazwa_(nazwa), cena_(cena), ile_(ile), jednostka_(jednostka) {}

	virtual ~Produkt() {}

	virtual void wypisz() = 0;
protected:
	std::string nazwa_;

	double cena_;

	int ile_;

	std::string jednostka_;
};

class Maka : public Produkt
{
public:
	Maka(std::string const& nazwa, double cena, int ile, std::string const& jednostka)
		: Produkt(nazwa, cena, ile, jednostka) {}

	virtual void wypisz() final
	{
		std::cout << nazwa_ << " " << cena_ << " " << ile_ << " " << jednostka_ << std::endl;
	}
};

int main()
{
	Maka maka("maka", 1.99, 1000, "gram");

	maka.wypisz();

	return 0;
}

jak tworzysz obiekt Maka to Produkt tez jest tworzony i to nawet przed Maka, nie mozesz podac do takiego obiektu klasy bazowej bo on sam ją tworzy

jak chcesz trzymać pointer fo interface'u to:

http://ideone.com/vvG6u3

1

I wszystko jest dobrze

Generalnie cały ten kod jest bez sensu. Nie wiem co chciałeś osiągnąć ale na pewno zrobiłeś to źle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1