Я создаю вектор ссылок на объекты моего класса в главной функции - всё работает замечательно. Создаю схожий вектор в ином классе - всё работать перестаёт. Ссылается на какие-то странные ошибки:
Необъявленный идентификатор
синтаксическая ошибка: >
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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как это правильно реализовать, чтобы захват был в Mat?
Написал простой сканер портов на асинхронных сокетахСоединение при сканировании mail
установил wampserverПытаюсь реализовать простейший запрос, но не получаю ответ сервера