Я делал проект для компьютерного курса по понятиям программирования. Этот проект должен был быть выполнен на C ++ с использованием объектно-ориентированных проектов, которые мы изучали на протяжении всего курса. Во всяком случае, у меня есть два файла symboltable.h
и symboltable.cpp
. Я хочу использовать карту в качестве структуры данных, поэтому я определяю ее в закрытом разделе заголовочного файла. Я #include <map>
в файле cpp, прежде чем я #include "symboltable.h"
.
Я получаю несколько ошибок от компилятора (MS VS 2008 Pro), когда иду отлаживать / запускать программу, первая из которых:
Error 1 error C2146: syntax error : missing ';' before identifier 'table' c:\users\jsmith\documents\visual studio 2008\projects\project2\project2\symboltable.h 22 Project2
Чтобы это исправить, мне нужно было #include <map>
в заголовочном файле, что мне кажется странным.
Вот соответствующие файлы кодов:
// symboltable.h
#include <map>
class SymbolTable {
public:
SymbolTable() {}
void insert(string variable, double value);
double lookUp(string variable);
void init(); // Added as part of the spec given in the conference area.
private:
map<string, double> table; // Our container for variables and their values.
};
и
// symboltable.cpp
#include <map>
#include <string>
#include <iostream>
using namespace std;
#include "symboltable.h"
void SymbolTable::insert(string variable, double value) {
table[variable] = value; // Creates a new map entry, if variable name already exist it overwrites last value.
}
double SymbolTable::lookUp(string variable) {
if(table.find(variable) == table.end()) // Search for the variable, find() returns a position, if thats the end then we didnt find it.
throw exception("Error: Uninitialized variable");
else
return table[variable];
}
void SymbolTable::init() {
table.clear(); // Clears the map, removes all elements.
}