Классы C ++ - как передать вектор пользовательского типа в функцию - PullRequest
0 голосов
/ 15 апреля 2011

Я пытаюсь разработать класс с функцией, которая может принимать вектор элементов в качестве аргумента.

Я могу заставить его работать нормально, если я использую вектор типа int или другой примитив,но я не могу заставить его работать с вектором объектов.

например:

В моем заголовочном файле:

int influenceParticles(vector<Particle> particles);

Это то, что я ищу,но не скомпилируется (указана ошибка "'Particle' was not declared in this scope").

Файл частиц.h был включен в начало этого заголовочного файла.

Уточнение

Вот файл .h, который дает мнеошибка

#ifndef _PARTICLE_ATTRACTOR
#define _PARTICLE_ATTRACTOR

#include "ofMain.h"
#include "particle.h"


class ParticleAttractor {

    //private
public:

    ParticleAttractor(int posX, int posY); //constructor (void)

    int influenceParticles(vector<Particle> particles);

};


#endif 

Ответы [ 2 ]

6 голосов
/ 15 апреля 2011

Может быть, у вас есть циклические включения, т.е.если ParticleAttractor.h также включает Particle.h.Чтобы решить эту проблему, вы должны сделать предварительное объявление Particle в ParticleAttractor.h:

class Particle;

Вам также следует рассмотреть возможность передачи вектора по ссылке, чтобы избежать копирования:

int influenceParticles(vector<Particle>& particles);
0 голосов
/ 15 апреля 2011

Первый Particle должен быть определенного типа. Это определение должно работать:

int influenceParticles(vector<vector<int> > particles); 

На практике лучше использовать ссылочный тип параметра, а не значение. Так что лучше определить это как:

int influenceParticles(vector<vector<int> >& particles); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...