GCC 4(.1.1) template osztaly szarmaztatasa template osztalybol...

Fórumok

ami 3.3.6-os GCC-vel eddig mukodott, az a 4-es verzioval nem ... hogyan lehetne megoldani, hogy megis menjen a kovetkezo dolog:
( a problema lenyege rem. latszik ebbol az egyebkent semmire sem jo peldabol :) )

// A.h
#ifndef A_H
#define A_H

template
class A
{
protected:
T a;
public:
A(T x)
{
a = x;
}
T x() const{return a;}
};

#endif

// B.h
#include "A.h"

template
class B : public A
{
private:
T b;
public:
B(T x):A(x)
{
b = x*2;
}
T y()
{
return a+b;
}
};

//main.cpp
#include "A.h"
#include "B.h"

#include
using namespace std;

int main()
{
B x(4);
cout<
return 0;
}

//
a fordito uzenete:
B.h: In member function 'T B::y()':
B.h:15: error: 'a' was not declared in this scope

tulajdonkepp amiatt van ez, hogy B es A kapcsolata nem is-a kapcsolat(vagyis B nem leszarmazottja A-nek)... a kerdes az, hogy hogyan lehetne megis megoldani ezt 4-es GCC-vel...

Hozzászólások

a \lt class T \gt nem jelenik meg, de valójában ott van, ahol lennie kell :)

akartam is kérdezni, hogy a class B : public A-nál csak a fórummotor miatt nem látszik-e a <T>, de már látom sikerült megoldani a problémát :)

ui: használj <code> tag-et, hogy látszódjon az indentálás, a kacsacsőrt pedig &lt; / &gt;-vel tudod előidézni