Witam, piszę właśnie metodę tworzącą nowe obiekty różnych klas w pętli iteracyjnej, dla każdej klasy różną ilość razy. Aby nie przepisywać pętli po kilka razy chciałem zrobić to optymalniej poprzez stworzenie do tego oddzielnej funkcji w następujący sposób:
void produce()
{
_produce(globespercycle, globe); // globe to klasa (żądany konstruktor)
tak chciałbym ją wywoływać
void _produce(int itemspercycle, product_constructor p_constructor)
{
for(int i = 0; i < itemspercycle; i++)
{
product * p = new p_constructor; // rózne klasy dziedziczące po product
if(head == NULL)
head = p;
else
head->next = p;
if(p->volume < smallest_item)
smallest_item = p->volume;
}
}
a to jej ciało.
Problem wystąpił przy linijce
product * p = new p_constructor;
gdzie
typedef ( * product_constructor )();
Kompilator zgłasza błąd "ISO C++ forbids declaration of 'product_constructor' with no type [-fpermissive]"
Domyślam się, że popełniam błąd merytoryczny próbując zrobić takie przypisanie, interesuje mnie jak zrobić taką funkcję produce() profesjonalnie.