Как я могу получить доступ к статической векторной переменной в основном файле, которая объявлена в заголовочном файле и заполнена исходным файлом. Конкретный код немного большой, поэтому ниже приведен пример того, что я пробовал ,Как использовать вектор объектов в разных файлах
class.h
class a{
private:
int x;
public:
friend void createVec();
};
void createVec();
static std::vector<a> vec;
source.cpp
include"class.h"
extern std::vector<a> vec; //if i remove this line code runs and don't show any error
// -of undefined variable
void createVec()
{
for(int i=0; i<9; i++)
{
vec.push_back(i); //while debugging and watching vec, code is able to populate vec
//but i doubt whether is it vector declared in class.h or not
}
}
main.cpp
#include "class.h"
extern std::vector<a> vec;
int main()
{
createVec();
cout<<vec.size() //it prints 0 instead of 10
}
Как и во многих файлах, вы использовали бы экземпляр любого другого типа. 'std :: vector' не является магии в этом отношении. – juanchopanza
@juanchopanza, но главный файл не имеет доступа к 'vec' – Rahul
Дело в том, что' std :: vector' не отличается от 'int' или любого другого типа в этом контексте. – juanchopanza