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, botów: 0