I was compiling an old programming assignment about manipulating polynomials represented as linked list of its terms and I ran into a plethora of unfamiliar errors. I originally used Visual Studio Express to do the assignment, where it successfully compiled and ran, if I remember correctly. Recently, however, I installed Ubuntu on an old Thinkpad and decided to give gcc/g++ a test run. Unfortunately, it failed to compile and gave me some strange errors on two lines where I declare a method a friend of the Term class. Here are the errors and relevant part of Poly.h.
In file included from assign7.cpp:9:
Poly.h:20: error: expected ‘,’ or ‘...’ before ‘&’ token
Poly.h:20: error: ISO C++ forbids declaration of ‘Poly’ with no type
Poly.h:21: error: expected ‘,’ or ‘...’ before ‘&’ token
Poly.h:21: error: ISO C++ forbids declaration of ‘Poly’ with no type
Code:
/*
[Removed personal info]
*/
#include <iostream>
#include <string>
#include <sstream>
#include <math.h>
using namespace std;
/* A class representing a term of a polynomial as a node in a linked list. Contains value of coefficient,
degree, and a pointer to the next list */
class Term
{
friend class Poly;
friend ostream& operator<<(ostream& out, const Poly& p); //Line 20
friend istream& operator>>(istream& in, const Poly& p); //Line 21
public:
Term(float c, int d) { coefficient = c; degree = d; next_term = 0; }
Term() { coefficient = 0; degree = 0; next_term = 0; }
const float evaluate(float x) const { return ( coefficient * pow(x,degree) ); }
const Term operator+(const Term& b) const;
const Term operator*(const Term& b) const;
const bool operator==(const Term& b) const;
const bool operator!=(const Term& b) const;
private:
float coefficient;
int degree;
Term *next_term;
};