dziedziczenie szablonów

0

witam, jak zrobić aby po bazowej klasie template Monitor mogła dziedziczyć inna klasa również template?

template <class monitorClass>
class MonitorProdCon: public Monitor <monitorClass>
{
protected:
    ConditionVariable full;
    ConditionVariable isEmpty;

public:
    MonitorProdCon(int size)
    {
      Monitor<monitorClass>(size);
	   full = ConditionVariable();
	   isEmpty = ConditionVariable();

    }

dostaję taki błąd:

In constructor ‘MonitorProdCon<monitorClass>::MonitorProdCon(int)’:
projekt_SOP_szczepaniak.cpp:180:33: error: declaration of ‘Monitor<monitorClass> size’ shadows a parameter
       Monitor<monitorClass>(size);
0
template<typename T>
class foo {
	foo(int x){}
};

template<typename T>
class bar: foo<T> {
	bar(): foo<T>(42){}
};

int main(){}

http://ideone.com/eyJ2xb

  • zastanowiłbym się, czy dziedziczenie jest konieczne.
0

niestety jest konieczne, dzięki już działa ale pojawił mi się kolejny problem :

//klasa pochodna
     void producerEnter(monitorClass* elem)
    {
	     if(this->lastEmpty-1==this->firstBussy or (this->firstBussy==-1 and this->lastEmpty==0)){full.wait();}
       this->InsertElem(&elem);
	     isEmpty.signal();
//klasa bazowa
    void insertElem(monitorClass* elem)
    {
	     cout<<"wstaw"<<" "<<lastEmpty<<" "<<firstBussy<<endl;
        objectList[lastEmpty] = *elem;
	       if(firstBussy==-1){firstBussy=0;}
	        lastEmpty++;
	         lastEmpty=lastEmpty%(this->monitorSize);

In instantiation of ‘void MonitorProdCon<monitorClass>::producerEnter(monitorClass*) [with monitorClass = int]’:
required from here
error: ‘class MonitorProdCon<int>’ has no member named ‘InsertElem’
this->InsertElem(&elem);

0

już mam tutaj jest I a tutaj i
do zamknięcia

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