Я создаю вектор ссылок на объекты моего класса в главной функции - всё работает замечательно. Создаю схожий вектор в ином классе - всё работать перестаёт. Ссылается на какие-то странные ошибки:
Необъявленный идентификатор
синтаксическая ошибка: >
std::vector: слишком мало аргументов шаблон
Вектор объявляю таким образом:
private:
std::vector<className*> objects;
Как я уже сказал, точно такой же код замечательно работает в функции Main.
#pragma once
#include <SFML\Graphics.hpp>
#include "Terrain.h"
#include <vector>
class Menu
{
public:
Menu();
~Menu();
private:
std::vector<MenuSprites*> sprites;
ClassB.h:
#pragma once
#include <vector>
#include "Class.h"
#include "ClassB.h"
class ClassB
{
public:
ClassB();
~ClassB();
private:
std::vector<ClassB*> a;
};
Class.h:
#pragma once
#include <vector>
#include "ClassB.h"
class Class
{
public:
Class();
~Class();
private:
std::vector<ClassB*> a;
};
Основная функции и .cpp все стандартные. Ошибка возникает.
ClassB.h включает Class.h, в котором есть std::vector<ClassB*> a;.
Т.к. ClassB еще не определен, то возникает ошибка "Необъявленный идентификатор".
Замените #include "ClassB.h" на class ClassB; там где не требуется полное определение класса.
Или напишите std::vector<class ClassB*>.
Почему у вас файл ClassB.h подключает самого себя и подключает Class.h? Попробуйте такой вариант:
Class.h
#ifndef CLASS_H
#define CLASS_H
#include "ClassB.h"
class Class
{
public:
Class();
~Class();
private:
std::vector<ClassB*> a;
};
#endif //CLASS_H
ClassB.h
#ifndef CLASSB_H
#define CLASSB_H
#include <vector>
class ClassB
{
public:
ClassB(){};
~ClassB();
private:
std::vector<ClassB*> a;
};
#endif //CLASSB_H
Сборка персонального компьютера от Artline: умный выбор для современных пользователей