gpt4 book ai didi

c++ - 共享 Ptr 变量访问和面向新手的面向对象编程

转载 作者:行者123 更新时间:2023-11-30 04:34:42 25 4
gpt4 key购买 nike

我需要一些建议,因为我是 c++ 的新手

对于我的风力涡轮机分析程序,我将其分为处理特定任务的各种对象。

一个对象处理文件输入/输出,在我遇到麻烦的情况下,我从一个文件中读取数据,并将这些数据填充到一个名为 blade 的对象数组中,每个对象都包含诸如应力和坐标之类的所有相关内容的数组到每个 Blade 。

另一项任务是后期处理,我希望这个后期处理对象能够处理 Blade 数据。

因此,我的 main 实例化了一个 post-pro 对象,它启动输入/输出对象并告诉它将数据读入 Blade 对象数组。到目前为止一切顺利,现在我想将填充的 Blade 对象数组恢复到后期处理中,这样我就可以用它做一些事情。

这引出了我的问题,但我会先问问题 0:

0:这种处理对象的方式听起来正确吗?

真正的问题是:

1:返回对象数组的指针似乎是可行的方法,出于某种原因,我认为 shared_ptr 是可行的方法。但我不知道查看变量数据的语法。以下是专业后期类(class)的一些示例代码:

void PostProcessor::start() {
VLMio io;//input/output object
io.loadData(theFileName);//load file
test = std::tr1::shared_ptr<Blade>(new Blade());//start up shared ptr called test
test = io.testReturn();//attempt to receive blade obect array into that pointer, is this correct?
cout<<test[0].x[0]<<endl//this line is trouble? is this how I would see the first x coord on the first blade?
//i.e is the syntax the same as for regular object pointers?
}

这是一个加载数据的例子,它用从文件中读取的数据填充一些 Blade 对象:

void IO::loadData() {
blades = new Blade[numberOfBlades];
blades[0].x[0] = 123;//just for example
blades[0].stress1 = 1234;//just for example
}

我还没有弄清楚如何返回这些 Blade 对象,但它可能看起来像这样:

std::tr1::shared_ptr<Blade> testReturn() {
//somehow attach a shared_ptr to the blades array pointer thing
//somehow return a shared ptr
}

综上所述,正确的做法是什么,智能指针对象的成员变量的语法是什么,希望你能理解,对不起,我是新手。

最佳答案

如果您想直接使用数组(如在 C 语言中),您需要创建一个 Blade 数组,而您的代码只创建一个。您还需要复习这个问题:TR1 Shared Arrays

但与其搞乱这些,不如返回一个 std::vector<Blade> 怎么样?或者可能是 std::tr1::array<Blade, N>它是否具有固定大小?

关于c++ - 共享 Ptr 变量访问和面向新手的面向对象编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5811350/

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