【发布时间】:2017-04-05 21:48:22
【问题描述】:
我正在使用一个类中声明的指针数组来指向另一个数组。当一个指针数组元素被初始化为 main 中的一个值时,该值也被传送到它所指向的数组元素。下面的代码显示了这一点,它工作正常。但是,如果我在 init 类函数中初始化指针,我会得到一个段错误。此外,如果我尝试访问未在 main 中初始化的指针数组中的元素,我也会得到一个段错误。
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
class testclass {
public:
double *Wgt;
double* *LWgt;
void init() {
Wgt = new double[26];
LWgt = new double*[26];
//segfault from here
*LWgt[5] = 22.34543;
}
};
int main() {
testclass *node;
node = new testclass[10];
for (int i = 0; i < 10; i++) {
node[i].init();
}
for (int i = 0; i < 5; i++) { //init_nconn here
node[i].LWgt[23] = &node[i + 5].Wgt[12];
}
node[6].Wgt[12] = 50.6987;
node[8].Wgt[12] = 0.999923;
cout << *node[1].LWgt[23] << *node[3].LWgt[23] << "--\n";
//No segfault
*node[1].LWgt[23] = 33.234;
cout << node[6].Wgt[12] << "---\n";
//No segfault here
cout << *node[1].LWgt[23] << "---\n";
//Segfault from here
cout << *node[3].LWgt[5] << "---\n";
}
有没有办法在类函数中初始化指针数组而不导致段错误?
【问题讨论】:
-
请正确缩进您的代码。
-
你是怎么做到的,我刚用了ctrl k。
-
你听说过构造函数吗?你从哪里学的这些东西?
-
是的,我知道构造函数和析构函数,但我通常不使用它们。这会让它工作吗?
-
LWgt = new double*[26];行分配了 26 个元素,每个元素类型为双精度指针。这些元素都没有指向任何东西。
标签: c++ function class pointers