Hello everyone,
I am trying to declare, in a header file, a class that has a member of type "vector<double>" (the code is included below). The compiler complains that I haven't included the appropriate namespace (the error message reads, "ISO C++ forbids declaration of ‘vector’ with no type"), and I understand that it is looking for this:
using namespace boost::numeric::ublas;
However, I tried putting it in the header file in various places (haven't programmed in C++ in 10 years and couldn't find any online documentation to clarify this specific situation), and still no luck. I am definitely doing something wrong, but cannot reason out the error, as it probably has to do with the specific syntax conventions. Any help is appreciated!
Thanks, -Al
P.S. Code in header file:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // File "airspace-graph-rectilinear-edges.h" typedef char* string; const int PHYSICAL_SPACE_DIMENSION = 2; // Information needed about a waypoint used in an airspace: name and physical position class WaypointConcept{ private: using namespace boost::numeric::ublas; string waypoint_name; vector<double> waypoint_position_xyh(PHYSICAL_SPACE_DIMENSION); public: string GetWaypointName(); vector<double> GetWaypointPosition(); }
class AirspaceGraphConcept PropertyGraphConcept<class Graph, class WaypointConcept, class vertex_index_t>; typedef Vertex* GraphPathType; typedef string FlightIDType; typedef boost::unordered_map<std::FlightIDType, GraphPathType> FlightIDToPathAssignmentType; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Code in the .cpp file (which includes the above header file) I am trying to compile: ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include <boost/lambda/lambda.hpp> #include <iostream> #include <iterator> #include <algorithm> #include <boost/numeric/ublas/io.hpp> #include <boost/numeric/ublas/vector.hpp> #include "airspace-graph-rectilinear-edges.h"
int main() { using namespace boost::numeric::ublas;
vector<double> v(3); for (unsigned i = 0; i < v.size(); ++ i) v (i) = 2.01*double(i); std::cout << v << std::endl; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////