GCC 4(.1.1) template osztaly szarmaztatasa template osztalybol...
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...
- Tovább (GCC 4(.1.1) template osztaly szarmaztatasa template osztalybol...)
- 1172 megtekintés