gpt4 book ai didi

c++ - 如何在 C++ 头文件中初始化和返回数组?

转载 作者:行者123 更新时间:2023-11-28 00:43:53 27 4
gpt4 key购买 nike

我不太擅长头文件,但我想使用头文件从文件中读取数据并将数据作为 vector 返回到主 cpp 文件中。

这是我的 readposcar.h 文件:

#include <fstream>
#include <sstream>
#include <vector>

using namespace std;

int add(void) {

double a1x, a1y, a1z, a2x, a2y, a2z, a3x, a3y, a3z; // I want all this stuff in vector form
int i;
double scale;
string line; stringstream dum;

ifstream poscar ("POSCAR");
for (i=1; i<=5; i++) {
getline(poscar,line);
if (i==2) {stringstream dum(line); dum >> scale;}
if (i==3) {stringstream dum(line); dum >> a1x >> a1y >> a1z;}
if (i==4) {stringstream dum(line); dum >> a2x >> a2y >> a2z;}
if (i==5) {stringstream dum(line); dum >> a3x >> a3y >> a3z;}
}

vector<double> myvec(3);
myvec[0] = a1x;
myvec[1] = a1y;
myvec[2] = a1z;
return myvec;
}

这是我的 .cpp 文件:

#include <iostream>
#include <fstream>

#include "readposcar.h"

using namespace std;

int main(void) {
int nbasis = 2;
int nkpts = 10;
vector<double> myvec2(3);
myvec2 = add();
cout << "No. of k-points: " << nkpts << endl;
return 0;
}

这显然行不通。有人可以建议我出了什么问题以及我需要做什么才能使其正常工作吗?如果我在 .h 文件中返回 myvec[2] 而不是整个数组,我只能让它工作。

如果 vector 不起作用,我不介意将其作为数组。是否可以将头文件中的数组初始化为一种全局数组,然后在 .cpp 文件中简单地调用它?

这是我得到的错误:

在 main.cpp:4:0 包含的文件中:

readposcar.h: In function ‘int add()’:
readposcar.h:27:9: error: cannot convert ‘std::vector<double>’ to ‘int’ in return
main.cpp: In function ‘int main()’:
main.cpp:12:15: error: no match for ‘operator=’ in ‘myvec2 = add()’

最佳答案

您应该更改 add 的返回类型来自 intvector<double>

关于c++ - 如何在 C++ 头文件中初始化和返回数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17380078/

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