Я пишу код на c ++ для построения решетки, а затем вычисляю энергии между точками для запуска некоторых симуляций MD.
У меня есть эта работа в рамках одной непрерывной основной функции, но я хочу разбить ее на подпрограммы, чтобы я мог изменить количество ячеек и построить только решетку для этого количества ячеек и рассчитать желаемые энергии только по назначению.Кол-во позиций решетки.
В построенной мной решетке используется 3 для циклов, чтобы записать положения x, y и z в их соответствующие векторы.Мне нужно передать три вектора из функции «решетка» в функцию «энергии», и я решил, что сделаю это, используя структуру из 3 векторов.
Я закомментировал большую часть кода, пытаясь заставить работать новую структуру, вот часть кода.
#include <iostream>
#include <fstream>
#include <string>
#include <stdio>
#include <math>
#include <vector>
using namespace std;
//use structure so the x, y, and z vectors can be passed as a return from the lattice function
struct Coordinates{
vector<double> xValues();
vector<double> yValues();
vector<double> zValues(); };
//First Function, of type Coordinates
Coordinates makeLattice(int xCell,int yCell,int zCell)
{
// Initialize a Lattice
Coordinates xyz; //creating an object of type:coordinates 'xyz'
int nCell = xCell*yCell*zCell; //number of cells in system
int nAtoms = 4*nCell;
cout<<"number of cells= "<<nCell<<" and number of atoms = "
<<nAtoms<<"\n";
xyz.xValues.resize(nAtoms);
xyz.yValues.resize(nAtoms);
xyz.zValues.resize(nAtoms);
//a whole bunch of commented out code
return xyz;
}
Я получаю ошибку при компиляции, потому что "xyz.coordinates :: xValues не имеет типа класса ", и та же ошибка для двух других векторов.Может кто-нибудь сказать мне, что мне не хватает при использовании структур?