ISO запрещает декларацию «идентификатора» без типа.

Хорошо, я знаю, что есть миллионы вариантов этой конкретной проблемы, и я попытался (отчаянно) пройти через все и посмотреть, применимы ли они, но безрезультатно.

В настоящее время я пытаюсь объявить deque в заголовочном файле, и эта чертова вещь не позволяет мне из-за упомянутой ошибки. То же самое происходит со мной во многих моих проектах, и я думаю, что это просто нечто базовое, чего мне не хватает в моих знаниях синтаксиса класса c ++.

main.cpp

#include <iostream>
#include <fstream>
#include <string>
#include <deque>
#include "Card.h"#include "random.h"
using namespace std;

void            createloop();
int             get_option();
deque <Card>    make_new_deck();
deque <Card>    load_new_deck();

int main()
{
createloop();
return 0;
}

Я не показал остальную часть файла для ясности, и я довольно уверен, что это не проблема. Ошибка появляется в Card.h:

Card.h

#ifndef CARD_H
#define CARD_H

class Card
{
public:
Card();

deque<string> param_name_deque;
deque<double> param_value_deque;
virtual ~Card();
protected:
private:
};

#endif // CARD_H

card.cpp

#include "Card.h"

Card::Card()
{
//ctor
}

Card::~Card()
{
//dtor
}

Всем, кто может помочь — заранее спасибо! Я буду очень счастлив, когда пойму, что здесь не так !!!

2

Решение

Вы должны включить как std :: deque, так и std :: string в ваш заголовочный файл card.h

#include <string>
#include <deque>

В то же время,

deque<string> param_name_deque;
deque<double> param_value_deque;

должно быть

std::deque<std::string> param_name_deque;
std::deque<double> param_value_deque;
6

Другие решения

Вам необходимо указать namespace в card.h когда вы объявляете param_name_deque а также param_value_deque:

std::deque<std::string> param_name_deque;
std::deque<double> param_value_deque;

и включите правильные заголовки:

#include <string>
#include <deque>

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

3

По вопросам рекламы [email protected]