I am getting an undefined reference and I have no clue why, everything looks properly declared and defined and linked, but obviously there is something wrong.
Error:
I am getting undefined reference
to UserOrder::add(User&, Order&)
called in Order::Order(UserOrder& [...])
order.h
:
#include "user-order.h"
class Order {
public:
Order(UserOrder& [...], User&, [...]);
[...]
};
order.cpp
Order::Order(UserOrder& u_o [...], User& u, [...]) {
[...]
u_o.add(u, *this); // here is the undefined reference
[...]
}
user-order.h
:
#include "user.h"
#include "order.h"
class Order;
class UserOrder {
public:
[...]
typedef std::set<Order*> Orders;
void add(User&, Order&);
[...]
private:
std::map<User*, Orders> orders;
std::map<Order*, User*> users;
};
user.cpp
UserOrder::add(User& u, Order& o) {
orders[&u].insert(&o);
users.insert(make_pair(&o, &u));
}
Why the heck am I getting undefined refference for add
?