Class Dependent Function

I have a base class DataProcessor. This is the base class for position calculators in some coordinate system. So, for example, it can have descendants like: SphericDataProcessor, CartesianDataProcessor. There is a base class CookedDataCatalogue, which is the base class for containers from the position of some objects. Therefore, everyone DataProcessorshould have their own data for each CookedDataCatalogue. I can imagine something like this:

class CookedDataCatalogue
{
    virtual void Transform(DataProcessor* dp) = 0;

    virtual void PutData(???) = 0;
}


class CookedDataCatalogue1 : public CookedDataCatalogue
{
    void Transform(DataProcessor* dp) override
    {
        dp->TransformTo(this);
    }
}

class CookedDataCatalogue2 : public CookedDataCatalogue
{
    ...
}

class CookedDataCatalogue3 ...

class DataProcessor
{
    virtual void Process() = 0;

    virtual void TransformTo(CookedDataCatalogue1* c) = 0;
    virtual void TransformTo(CookedDataCatalogue2* c) = 0;
    virtual void TransformTo(CookedDataCatalogue3* c) = 0;
}

. void Transform(DataProcessor*) **. -, , CookedDataUserCatalogue, void TransformTo(CookedDataUserCatalogue). -, , PutData(), . ?

? - , ?

+4
1

, Double Dispatch, :

Baseline

-, "" . , , .

: toBaseline fromBaseline DataProcessor s. DataProcessor , , .

: , . - , .

, DataProcessor DataProcessor.

.

, . .

: .

: n ^ 2 Transform , n - DataProcessor. DataProcessor Transform DataProcessor. Transform , .

+1

All Articles