Lom |
Отправлено: 29.08.2006, 11:04 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 13
|
Ситуация следующего характера:
есть класс TFunc, в нем описаны float A и B.
Есть TAlg — наследник TFunc.
Есть классы TPrm, TTrp, TSmp, которые являются наследниками TAlg.
А еще есть класс TIntegral, который множественно наследует TPrm TTrp, TSmp.
Так вот вопрос:
когда я в процедуре SetVar() (см. ниже) пытаюсь задать значение A, B или n,
то CBuilder пишет, что
[C++ Error] IntegralClasses.cpp(15): E2014 Member is ambiguous: 'TFunc::A' and 'TFunc::A'
Помогите пожалуйста.
CODE |
class TFunc {
public:
int n;
float A,B;
TFunc();
~TFunc();
double IFunc(double x);
// void SetVar(AnsiString A_, AnsiString B_, AnsiString n_);
float getA() const;
float getB() const;
float getN() const;
};
//------------------------------------------------------------------------------
class TAlg:public TFunc{
public:
TAlg();
TAlg(float A_, float B_, float n_);
~TAlg();
virtual float GetR()=0;
};
//------------------------------------------------------------------------------
class TPrm:public TAlg{
public:
TPrm();
~TPrm();
float GetR();
};
//------------------------------------------------------------------------------
class TTrp:public TAlg{
public:
TTrp();
~TTrp();
float GetR();
};
//------------------------------------------------------------------------------
class TSmp:public TAlg{
public:
TSmp();
~TSmp();
float GetR();
};
//------------------------------------------------------------------------------
class TIntegral: public TPrm,
public TTrp,
public TSmp{
public:
void SetVar(AnsiString A_, AnsiString B_, AnsiString n_);
float Result(method mtd);
TIntegral();
~TIntegral();
};
|
Отредактировано olegenty — 29/08/2006, 14:58 |
|
olegenty |
Отправлено: 29.08.2006, 14:04 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
либо конкретизируй так:
TPrm::A
TTrp::A
TSmp::A
либо подумай о виртуальном наследовании (в этом случае диаграмма наследования будет выглядеть как "сетка", а не как "дерево", и в производном классе TIntegral будет только один "экземпляр" класса TAlg, а конкретизации будет требовать только один метод: GetR())
|
|
|