Как вызвать не статическую функцию-член из статической функции-члена?

Мне нужно вызвать нестатическую функцию-член из нестатической функции-члена того же класса, например:

  class bintree {
private:
float root;
bintree *left;
bintree *right;public:
bintree() : left(nullptr), right(nullptr) {
}

bintree(const float &t) : root(t), left(nullptr), right(nullptr) {
}

~bintree() {
if (left != nullptr)
delete left;

if (right != nullptr)
delete right;
}

static void niveles(bintree *);

static bintree *dameBST(float** array, int depth, int left = 0, int right = -1);
void quickSort2D(float** arr, int left, int right, int n);

};

Моя проблема в функции dameBST, когда я вызываю quickSort2D, когда программа ломается с сообщением «Ошибка сегментации: 11».

bintree *
bintree::dameBST(float **array, int depth, int left, int right)
{
int n=0;
depth++;
bintree *t = new bintree;
bintree *tl;
bintree *tr;

if(depth%2 != 0) { n = 1; }

quickSort2D(array, left, right -1, n);
if (right == -1) {right = 10;}
if (left == right) { return nullptr; }
if( left == right - 1 ) { return new bintree(array[left][n]); }int med = (left + right) / 2;

t->root = array[med][n];
tl = dameBST(array, depth, left, med);
tr = dameBST(array, depth, med + 1, right);
t->left = tl;
t->right = tr;return t;

Я не понимаю почему.

-3

Решение

Нестатическая функция-член — это метод, который должен вызываться в экземпляре класса. В статическом контексте нет экземпляра. Есть только класс.

Если у вас есть объект t класса binkree Вы можете вызвать метод quickSort2D:

t.quickSort2D(...)

ОБНОВИТЬ
Вы можете вызывать статические методы из нестатических функций, но НЕ наоборот

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector