Предположим, у меня есть класс под названием частица:

class particle {
public:
    void set_values(double x, double y) {
        x_val = x;
        y_val = y;
    }
    double X() { return x_val; }
    double Y() { return y_val; }
private:
    x_val, y_val;
};

Теперь предположим, что у меня есть массив типа частиц с 3 частицами внутри:

int main(){
    particle p1;
    particle p2;
    particle p3;
    p1.set_values(3,1);
    p2.set_values(2,4);
    p3.set_values(1,5);
    part array_part[3] = {p1, p2, p3};
    return 0;
}

Теперь мой вопрос: как я могу создать функцию внутри класса, которая принимает array_part и возвращает максимальное или минимальное значение его значений X () или Y ()? Конечно, я мог бы сделать это вне класса, просто заполнив новый массив, например, все значения X () и используйте функцию c ++ min_element. Этот код будет выглядеть так для минимального значения:

double array_x[3] = {p1.X(), p2.X(), p3.X()};
double X_min =  *min_element(array_x, array_x
    + sizeof(array_x)/sizeof(*array_x));

X_min теперь будет = 1. Но как внутри класса без необходимости много писать в основном? Я действительно не знаю, с чего начать.

0
gpompa 2 Дек 2017 в 14:55

1 ответ

Лучший ответ

Этот код не соответствует лучшим практикам разработки программного обеспечения, но если вы хотите что-то таким образом, вы можете сделать следующее.

class Particle {
public:
    void set_values(double x, double y) {
        x_val = x;
        y_val = y;
    }
    double X() { return x_val; }
    double Y() { return y_val; }

    // If you need minimun Y, change the X for Y on the function.
    double get_min_x(Particle* particles, int n){
        double minimun = particles[0].X();
        for(int i = 0; i < n; i++){
            if(particles[i].X() < minimun){
                minimun = particles[i].X();
            }
        }
        return minimun;
    }
private:
    double x_val, y_val;
};

Учитывая Particle array_part[3] = {p1, p2, p3};, вы можете это сделать

p1.get_min_x(array_part, 3)

Когда вы моделируете класс, подумайте: что знает частица? Что делает частица? Знает ли частица, какая частица имеет наименьшее значение x или y? Думаю, нет!

0
enyard 2 Дек 2017 в 13:25