Reputation: 73
I just split a C++ program that i'm writing up into multiple files.
Now I am getting this error for every member function declaration.
What am I doing wrong?
3 class Office{
4 private:
5 static const int IDLE = 0, BUSY = 1;
6 const int num_tellers;
7 int students_served;
8
9 vector<double> que; // a vector que which holds the arrival times of students entering an Office
10 vector<int> tellers; // a vector to hold the status (IDLE or BUSY) of the tellers *** INITIALIZED TO SIZE tellers[num_tellers] IN CONSTRUCTOR ***
11
12
13 variate_generator<mt19937, exponential_distribution<> > serve_time; // random variable, determines the time it takes a teller to serve a student
14
15 public:
16
17 Office(double const office_mean, int const num_tellers) : num_tellers(num_tellers), tellers(vector<int>(num_tellers, IDLE)),
18 serve_time(variate_generator< mt19937, exponential_distribution<> >( mt19937(time(0)), exponential_distribution<>( 1 / office_mean))){
19 } // initialize tellers vector to size num_tellers w/ tellers[i] = IDLE, accumulated times to , and initializes serve_time random variable
37 int Office::departure_destination(Event* departure) { // returns the next destination of a student departing from an Office
38
39 if (departure->depart_from == AID) {
40 return determine_destination(.15, .15, 0, 0, .70);
41 else if (departure->depart_from == PARKING)
42 return next_destination = determine_destination(.3, 0, 0, 0, .7);
43 else if (departure->depart_from == REGISTRAR)
44 return next_destination = determine_destination(.25, 0, .1, 0, .65);
45 else if (departure->depart_from == BURSAR)
46 return next_destination = determine_destination(0, .1, .2, .1, .60);
47 else
48 return -1;
49 }
50
then in the header file
57 int Office::departure_destination(Event* departure);
Upvotes: 0
Views: 1241
Reputation: 5605
OK. Follow these rules and you should end up with something pretty close:
The easiest way to understand this is to realize that nothing in a header file generates actual machine instructions or data. Everything in a header is declarative. It describes how something would generate code or data if it were used, for example, to declare a variable. Your C++ files need these "outlines" in order to understand what you want when you try to call some function in another file, invoke a method on an object, etc.
All of the #define kind of instructions are text processing.
Template are actually a turing-complete language, but they don't generate code until you make something with them...and then it is sorta like they are generating their own C++ files.
Class declarations define what an object would have in it, should you chose to make one.
So, a typical header file (say my_header) will look like this:
#ifndef MY_HEADER
#define MY_HEADER
extern int global;
class A {
... data declarations, inline functions ...
public:
void f();
};
#endif
and the C++ file:
#include "my_header"
int global; // only in ONE C file...this generates real data
void A::f() { ... generates real code to be linked to ... }
Upvotes: 3