私のような同じクラスの非静的メンバ関数から非静的メンバ関数を呼び出す必要があります:私の問題は、私は「セグメンテーションフォールトでのプログラムのクラッシュquickSort2Dを呼び出すときdameBST機能である静的メンバー関数から非静的メンバー関数を呼び出す方法
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);
};
: 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;
なぜか分かりません。
はしないでください。 )、それを行う必要がある場合は、静的関数が最初にメンバ関数である必要があることを意味します。 – alfC
まあ、私は古典的な答えは、パラメータとしてインスタンスを渡し、静的関数内からインスタンスメソッドを呼び出すことだと思います。 –