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...
- 1172 megtekintés
Hozzászólások
a \lt class T \gt nem jelenik meg, de valójában ott van, ahol lennie kell :)
- A hozzászóláshoz be kell jelentkezni
közben találtam valamit... igazából nem a GCC 4-es verziója hibázik, hanem a regebbi...
http://womble.decadentplace.org.uk/c++/template-faq.html#base-lookup
- A hozzászóláshoz be kell jelentkezni
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 < / >-vel tudod előidézni
- A hozzászóláshoz be kell jelentkezni
jah... én is néztem egyet, mikor megláttam , hogy nincs < > :)
- A hozzászóláshoz be kell jelentkezni
fejlett prog? :)
- A hozzászóláshoz be kell jelentkezni
nem, nem Szegedre járok :D
csak munkahelyen 4.1.1-es gcc van, otthoni gépemröl áthúztam egy ion-atom ütközéses prg.-om kódját, hogy kicsit piszkáljam... mondjuk még vmikor ugyanezen prg. kapcsán a qt3->qt4 váltást is meg kell szenvednem :D
- A hozzászóláshoz be kell jelentkezni