#include <oxstd.h>

class MySimula
{
    decl m_cT;          // sample size
    decl m_cRep;        // no of replications
    decl m_mCoefVal;    // coefficient values of each replication
    
    MySimula(const cT, const cM); // constructor
    Simulate();         // do the experiment
    Report();            // print simulation results
    virtual Generate(const iRep, const cT);
};
MySimula::MySimula(const cT, const cM)
{
    m_cRep = cM;
    m_cT = cT;
}    
MySimula::Simulate()
{
    decl i;

    for (i = 0; i < m_cRep; ++i)
    {
         // do the replication
        Generate(i, m_cT);
    }
    Report();
}
MySimula::Report()
{
    println("Did nothing ", m_cRep, " times");
}
MySimula::Generate(const iRep, const cT)
{
    println("MySimula::Generate()");
}

class SimNormal : MySimula
{
    SimNormal(const cT, const cM); // constructor
    Generate(const iRep, const cT);
};
SimNormal::SimNormal(const cT, const cM)
{
    MySimula(cT, cM);     // call base class constructor
}    
SimNormal::Generate(const iRep, const cT)
{
    println("SimNormal::Generate()");
}

main()
{
    decl mysim = new SimNormal(50, 2);

    mysim.Simulate();
    delete mysim;
}
