gpt4 book ai didi

c++ - 尝试使用对象指针的 boost::multi_array

转载 作者:行者123 更新时间:2023-11-28 05:44:44 25 4
gpt4 key购买 nike

我面临以下问题。我想使用 boost::multi_array 创建一个对象指针的多维数组,但即使我编写的代码可以编译,当我尝试在 Eclipse 中运行时,程序也会终止并且不会打印任何内容。让我举例说明一个非常小的例子,以防这可能有任何帮助。所以有以下非常小的简单类:

class example {
public:
example();
virtual ~example();

int a;

};

我只是尝试通过以下方式创建和使用此类的多指针数组:

int main() {

typedef boost::multi_array<example * , 2> array_type1;

array_type1 DE(boost::extents[2][2]);

DE[0][0]->a=6;
DE[1][0]->a=7;
DE[0][1]->a=8;
DE[1][1]->a=9;

cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;

还要注意,当我使用 boost/test/minimal.hpp ( http://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/minimal.html ) 运行相同的代码来检查正在发生的事情时,主要结果如下所示:

int test_main(int, char*[]){


typedef boost::multi_array<example * , 2> array_type1;

array_type1 DE(boost::extents[2][2]);

DE[0][0]->a=6;
DE[1][0]->a=7;
DE[0][1]->a=8;
DE[1][1]->a=9;

cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return boost::exit_success;

我收到以下消息:

/usr/include/boost/test/minimal.hpp(123): exception "memory access violation at address: 0x00000008: no mapping at fault address" caught in function: 'int main(int, char**)'

**** Testing aborted.
**** 1 error detected

任何关于如何解决这个问题的建议现在对我都非常有帮助!

最佳答案

array_type1 DE(boost::extents[2][2]);
DE[0][0]->a=6;

您取消引用 DE[0][0] 处的指针,但事先从未使其指向实际的 example 实例。

关于c++ - 尝试使用对象指针的 boost::multi_array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36451249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com