Проблема с создание вектора в классе, С++

199
15 августа 2017, 15:34

Я создаю вектор ссылок на объекты моего класса в главной функции - всё работает замечательно. Создаю схожий вектор в ином классе - всё работать перестаёт. Ссылается на какие-то странные ошибки:

Необъявленный идентификатор

синтаксическая ошибка: >

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 все стандартные. Ошибка возникает.

Answer 1

ClassB.h включает Class.h, в котором есть std::vector<ClassB*> a;.
Т.к. ClassB еще не определен, то возникает ошибка "Необъявленный идентификатор".

Замените #include "ClassB.h" на class ClassB; там где не требуется полное определение класса. Или напишите std::vector<class ClassB*>.

Answer 2

Почему у вас файл 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
READ ALSO
Считывание экрана окна с помощью opencv и С++ [требует правки]

Считывание экрана окна с помощью opencv и С++ [требует правки]

Как это правильно реализовать, чтобы захват был в Mat?

235
Сканер портов не может подключиться к хосту

Сканер портов не может подключиться к хосту

Написал простой сканер портов на асинхронных сокетахСоединение при сканировании mail

205
Visual studio не работает exe [дубликат]

Visual studio не работает exe [дубликат]

На данный вопрос уже ответили:

229
не работает jQuery ajax запрос

не работает jQuery ajax запрос

установил wampserverПытаюсь реализовать простейший запрос, но не получаю ответ сервера

276