I had to submit this code as homework, and from my perspective this code complies, however my teacher, who compiles using console, it does not, could someone guide me as to why it works on dev C++, but not elsewhere?
The main.cpp code:
#include <iostream>
#include "Polynomial.h"
int main() {
Polynomial p1, p2, p3, p4, p5;
p1.addTerm(2, 4);
p2.addTerm(3, 2);
p1.print();
p2.print();
p3 = p1 + p2;
std::cout << "p1 + p2: ";
p3.print();
p4 = p1 - p2;
std::cout << "p1 - p2: ";
p4.print();
p5 = p1 * p2;
std::cout << "p1 * p2: ";
p5.print();
p1 += p2;
std::cout << "p1 += p2: ";
p1.print();
p1 -= p2;
std::cout << "p1 -= p2: ";
p1.print();
p1 *= p2;
std::cout << "p1 *= p2: ";
p1.print();
return 0;
}
The .h file:
#include <vector>
#ifndef POLYNOMMIAL_H
#define POLYNOMMIAL_H
class Polynomial {
private:
double coefficient;
int exponent;
Term(double c, int e) : coefficient(c), exponent(e) {}
public:
Polynomial();
void addTerm(double coefficient, int exponent);
Polynomial operator+(const Polynomial& p);
Polynomial operator-(const Polynomial& p);
Polynomial& operator=(const Polynomial& p);
Polynomial operator*(const Polynomial& p);
Polynomial& operator+=(const Polynomial& p);
Polynomial& operator-=(const Polynomial& p);
Polynomial& operator*=(const Polynomial& p);
void print() const;
};
#endif
And the class definition:
#include "Polynomial.h"
#include <algorithm>
#include <iostream>
Polynomial::Polynomial() {}
void Polynomial::addTerm(double coefficient, int exponent) {
terms.push_back(Term(coefficient, exponent));
}
Polynomial Polynomial::operator+(const Polynomial& p) {
Polynomial result = *this;
result += p;
return result;
}
Polynomial Polynomial::operator-(const Polynomial& p) {
Polynomial result = *this;
result -= p;
return result;
}
Polynomial& Polynomial::operator=(const Polynomial& p) {
if (this != &p) {
terms = p.terms;
}
return *this;
}
Polynomial Polynomial::operator*(const Polynomial& p) {
Polynomial result = *this;
result *= p;
return result;
}
Polynomial& Polynomial::operator+=(const Polynomial& p) {
Polynomial operator+(const Polynomial& p);
}
Polynomial& Polynomial::operator-=(const Polynomial& p) {
Polynomial operator-(const Polynomial& p);
}
Polynomial& Polynomial::operator*=(const Polynomial& p) {
Polynomial operator*(const Polynomial& p);
}
void Polynomial::print() const {
for (const auto& term : terms) {
std::cout << term.coefficient << "x^" << term.exponent << " + ";
}
std::cout << "bb " << std::endl; // Erase the last " + "
}
I dont really know what to try since I know basically nothing about how C++ is compiled, but I would expect it to work regardless of where its complied.
user25637096 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.