Хорошо, я знаю, что есть миллионы вариантов этой конкретной проблемы, и я попытался (отчаянно) пройти через все и посмотреть, применимы ли они, но безрезультатно.
В настоящее время я пытаюсь объявить 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
}
Всем, кто может помочь — заранее спасибо! Я буду очень счастлив, когда пойму, что здесь не так !!!
Вы должны включить как 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;
Вам необходимо указать 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, это может показаться удобным, но в конечном итоге это вызовет у вас проблемы.