Ошибка «нет типа класса» при попытке изменить вектор в структуре - PullRequest
0 голосов
/ 06 октября 2018

Я пишу код на 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 ​​не имеет типа класса ", и та же ошибка для двух других векторов.Может кто-нибудь сказать мне, что мне не хватает при использовании структур?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...