我在2天内遇到错误LNK2019问题。试图解决这个问题。
所以我的小项目如下所示:
polynomial.h:
#pragma once
#include <iostream>
#include <sstream>
#include <fstream>
#include <exception>
#include<exception>
#include<string>
using namespace std;
/**
* Klasa definiująca wyjątek wykorzystywany w klasie {\link polynomial polynomial}
* \version 1.0
*/
class MojException : public exception
{
private:
/** Przechowywanie komunikatu bledu */
// string s;
string error;
public:
// static const string error[]
/** Konstruktor podstawowy
* \param ss komunikat bledu
*/
MojException(string ss) throw();
/** Destruktor
*/
virtual ~MojException() throw();
/** Wypisywanie komunikatu błędu
* \return tablica znakow typu char
*/
virtual const char* what() const throw();
};
MojException::MojException(string ss) throw() : error(ss) {}
MojException::~MojException() throw() {}
const char*MojException::what() const throw() { return error.c_str(); }
/*const string MojException::error[] = { "stopien nie jest naturalny", "liczba wspolczynnikow niezgodna ze stopniem wielomianu",
"wspolczynniki nie sa liczbowe", "dane nie sa liczbowe", "4 zla liczba argumentow w linii polecen", "pliki sie nie otwieraja"}; //"nie istnieje taki element tablicy" };
*/
/**
* Klasa definiująca wielomian {\link polynomial polynomial}
* \version 1.0
* \author Joanna Nagumowicz
* \date 2013-12-15
*/
template <typename T>
class polynomial
{ public:
/** Przechowywanie stopnia wielomianu */
unsigned int degree;
/** Przechowywanie wskaznika na tablice ze wspolczynnikami wielomianu */
T *coefficients;
/** Funkcja usuwajaca 0
* \param p wielomian
* \return wielomian z usunietymi zerami
*/
const polynomial<T> stopien(polynomial<T> p);
/** Konstruktor podstawowy klasy polynomial
* \param n stopien wielomianu
* \return wielomian postaci xn
* \throws niepoprawny stopien wielomianu
* \throws bad alloc - wyjatek, gdy za malo pamieci
*/
polynomial<T>(unsigned int n)throw(MojException);
/** Destruktor klasy polynomial
*/
~polynomial();
/** Funkcja ustawiająca współczynniki przy potedze i na value
* \param i indeks ustawianego elementu
* \param value wartość ustawianego elementu
* \return wartosci wspolczynnikow
* \throws MojException wyjątek w przypadku błędnych indeksów
*/
void setCoefficient(unsigned int i, T value);
/** Funkcja zwracajaca wspolczynnik przy potedze i
* \param i indeks zwracanego elementu
* \return wartosc zwracanego elementu
* \throws MojException wyjatek w przypadku błędnych indeksów
*/
T getCoefficient(unsigned int i);
/** Funkcja zwracająca wartosc wielomianu dla x
* \param x wartosc dla ktorej liczymy
* \return wartosc zwracanej wartosci
* \throws MojException wyjątek w przypadku błędnych indeksów
*/
T value(T x);
/** Funkcja zaprzyjazniona która dla wielomianu wypisuje jego postać
* \param p wielomian
* \param out strumien zewnetrzny
* \return postac wielomianu
*/
friend ostream & operator<<(ostream & out, polynomial<T> & p);
/** Funkcja zaprzyjazniona do obslugi strumieni
* \param p wielomian
* \param out strumien zewnetrzny
* \return postac wielomianu
*/
friend ostream & operator<<(ostream & out, polynomial<T> * p);
/** Przechowywanie komunikatu błędu */
//static const string error[]; // zdefiniowanie operatora dostepu do tablicy, liczba bledow
/** Funkcja definiujaca operator dostepu
* \param i indeks potegi
* \return wartosc wspolczynnika przy potedze i
* \throws wyjątek gdy indeks nie należy do tablicy
*/
T operator[](unsigned int i) throw(out_of_range);
/** Funkcja definiujaca operator wywolania
* \param x wartosc dla ktorej liczymy wielomian
* \return wartosc wielomianu dla danego x
*/
T operator()(T x) const;
/** Konstruktor kopiujacy wspolczynniki do nowej tablicy wspolczynnikow
* \param p wielomian
* \return wielomian
*/
polynomial<T> (const polynomial<T> & p);
/** Zdefiniowanie przypisania wielomianu operatorem " = "
* \param p wielomian
* \return przypisany wielomian
*/
polynomial<T> & operator=(const polynomial<T> & p);
/** zdefiniowanie dodawania wielomianów " + "
* \param p wielomian
* \return dodane wielomiany
*/
const polynomial<T> operator+(const polynomial<T> & p) const;
/** zdefiniowanie mnozenia wielomian razy wielomian
* \param p wielomian
* \return wymnozone wielomiany
*/
const polynomial<T> operator*(const polynomial<T> & p) const;
/** zdefiniowanie mnozenia liczba razy wielomian
* \param x liczba przez ktora
* \return wymnozony wielomian przez liczbe
*/
const polynomial<T> operator*(T x) const;
/** zdefiniowanie mnozenia wielomian razy liczba
* \param x liczba przez ktora mnozymy
* \param p wielomian
* \return wymnozony wielomian przez liczbe
*/
friend const polynomial<T> operator*(T x, const polynomial<T> & p);
/** zdefiniowanie odejmowanie wielomianow (binarne)
* \param p wielomian
* \return roznica wielomianow
*/
const polynomial<T> operator-(const polynomial<T> & p) const;
/** zdefiniowanie odejmowanie wielomianow (unarne)
* \return wielomian przemnozony przez (-1)
*/
const polynomial<T> operator-() const;
/** zdefiniowanie dodania i przypisania wielomianu
* \param p wielomian
* \return dodany i przypisany wielomian
*/
polynomial<T> & operator+=( const polynomial<T> & p);
/** zdefiniowanie odejmowania i przypisania wielomianu
* \param p wielomian
* \return odjety i przypisany wielomian
*/
polynomial<T> & operator-=( const polynomial<T> & p);
/** zdefiniowanie mnożenia i przypisania wielomianu
* \param p wielomian
* \return wymnozony i przypisany wielomian
*/
polynomial<T> & operator*=( const polynomial<T> & p);
/** zdefiniowanie mnożenia i przypisania wielomianu
* \param x liczba przez ktora mnozymy wielomian
* \return wymnozony i przypisany wielomian
*/
polynomial<T> & operator*=( T x );
/** zdefiniowanie mnożenia i przypisania wielomianu
* \param x liczba przez ktora mnozymy wielomian
* \param p wielomian
* \return wymnozony i przypisany wielomian
*/
friend const polynomial<T> operator*=( T x, polynomial<T> & p );
/** Zdefiniowanie operatora przyrownania wielomianow
* \param p wielomian
* \return prawda lub falsz
*/
bool operator==( const polynomial<T> & p);
/** Zdefiniowanie operatora nierownosci wielomianow
* \param p wielomian
* \return prawda lub falsz
*/
bool operator!=( const polynomial<T> & p);
/** Zdefiniowanie operatora " < " sprawdzajacego czy pierwszy wielomian jest mniejszy
* \param p wielomian
* \return prawda lub falsz
*/
bool operator<( const polynomial<T> & p);
/** Zdefiniowanie operatora " > " sprawdzajacego czy pierwszy wielomian jest wiekszy
* \param p wielomian
* \return prawda lub falsz
*/
bool operator>( const polynomial<T> & p);
/** Zdefiniowanie operatora " <= " sprawdzajacego czy pierwszy wielomian jest mniejszy lub rowny drugiemu
* \param p wielomian
* \return prawda lub falsz
*/
bool operator<=( const polynomial<T> & p);
/** Zdefiniowanie operatora " >= " sprawdzajacego czy pierwszy wielomian jest wiekszy lub rowny drugiemu
* \param p wielomian
* \return prawda lub falsz
*/
bool operator>=( const polynomial<T> & p);
};
//#include "polynomial.cpp"
template <typename T>
polynomial<T>::polynomial(unsigned int n) throw (MojException)
{
degree = n; // stopień wielomianu
try
{
coefficients = new T[n+1]; // tworzy tablice współczynników wielomianu
for (int i = 0; i < n+1; i++) // pętla for która sprawdza współczynniki wielomianu
{
coefficients[i]=0; // zerujemy tablice współczynników
}
}
catch(bad_alloc & w)
{
throw MojException("za mało pamięci");
}
}
template <typename T>
polynomial<T>::~polynomial() //destruktor zwalniający pamiec
{
delete []coefficients;
}
template <typename T>
void polynomial<T>::setCoefficient(unsigned int i, T value) throw(MojException)
{
coefficients[i]=value; //ustawia wspolczynnik przy potedze i na value
}
template <typename T>
T polynomial<T>::getCoefficient(unsigned int i) throw(MojException) // zwraca współczynnik przy potedze i
{
return coefficients[i];
}
template <typename T>
T polynomial<T>::value(T x) throw(MojException) // zwraca wartosc wielomianu dla x
{
T rezultat = 0;
for (int i = degree + 1; i >= 0; i--) //pętla do obliczenia wyniku (ponieważ na 0 nie wchodzi, dlatego powiększamy stopień o 1)
{
rezultat = rezultat * x + coefficients[i];
}
return rezultat;
}
template <typename T>
ostream & operator<<(ostream & out, polynomial<T> & p)
{
for (int i = p.degree ; i >= 0; i--)
{
if (p.coefficients[i]!=0) //jeśli współczynnik przy x jest różny od 0
{
if (p.coefficients[i]>0 && i!=p.degree ) //jesli potega przy x jest wieksza od 0, to znak +
{
out << "+";
}
out << p.coefficients[i]; //wypisuje wspolczynnik
if (i >= 0) //jesli potega jest >= 0 to wypisuje jak niżej
out << "*";
out << "x^" << i; //wypisuje x do danej potegi wynikajacej z dzialania petli
}
}
return out;
}
template <typename T>
T polynomial<T>::operator[](unsigned int i) throw(out_of_range) // zdefiniowanie operatora dostepu " [] "
{
if(i > degree) throw out_of_range( "nie istnieje taki element tablicy " ); // wyjatek jesli dana wartosc nie nalezy do tablicy
return coefficients[i]; // dostep do wspolczynnikow wielomianu
}
template <typename T>
T polynomial<T>::operator()(T x) const //zdefiniowanie operatora wywolania " () "
{
T v=0.0;
for(unsigned int i=degree; i>0; i--) v=x*v+coefficients[i];
v=x*v+coefficients[0];
return v; //wywolanie wartosci wielomianu w punkcie
}
template <typename T>
polynomial<T>::polynomial(const polynomial<T> & p) // konstruktor kopiujacy
{
degree = p.degree;
try{
coefficients = new T[degree+1];
}
catch(bad_alloc & w)
{
throw MojException("za mało pamięci");
}
for(unsigned int i=0; i<=degree; i++)
coefficients[i] = p.coefficients[i];
}
template <typename T>
const polynomial<T> polynomial<T>::stopien(polynomial<T> p) //metoda usuwająca 0
{
int a;
for (int i=degree; i<=0; i++)
{
if(p.coefficients[i] != 0)
{
a=i;
break;
}
}
polynomial n(a);
try{
coefficients = new T[a];
}
catch(bad_alloc & w)
{
throw MojException("za mało pamięci");
}
for (int i=0; i<=a; i++)
{
coefficients[i] = p.coefficients[i];
}
return n;
}
template <typename T>
polynomial<T> & polynomial<T>::operator=(const polynomial<T> & p) // zdefiniowanie przypisania wielomianu operatorem " = "
{
delete [] coefficients;
degree = p.degree; // bezposrednie przypisanie stopnia
try{
coefficients = new T[degree+1]; // stworzenie nowej tablicy
}
catch(bad_alloc & w)
{
throw MojException("za mało pamięci");
}
for(unsigned int i=0; i<=degree; i++)
coefficients[i] = p.coefficients[i];
return (*this); // wynik zwracam jako referencje; this - jest wskaznikiem, odnosi sie do obiektu na rzecz ktorego wywolalismy metode
}
template <typename T>
const polynomial<T> polynomial<T>::operator+(const polynomial<T> & p) const // zdefiniowanie dodawania wielomianów " + "
{
unsigned int max, min;
bool ch = false;
if( degree>p.degree )
{
max=degree;
min=p.degree;
ch=true;
}
else
{
max=p.degree;
min=degree;
}
polynomial c(max);
for(unsigned int i=0; i<=min; i++ )
c.coefficients[i] = coefficients[i] + p.coefficients[i];
for(unsigned int i=min+1; i<=max; i++ )
if( ch )
c.coefficients[i] = coefficients[i];
else
c.coefficients[i] = p.coefficients[i];
polynomial stopien(c);
return c;
}
template <typename T>
const polynomial<T> operator*(T x, const polynomial<T> & p) // mnozenie liczba razy wielomian
{
polynomial c(p.degree);
for(unsigned int i=0; i<=p.degree; i++)
c.coefficients[i]=x*p.coefficients[i];
return c;
}
template <typename T>
const polynomial<T> polynomial<T>::operator*(T x) const // mnozenie wielomian razy liczba
{
polynomial c(degree);
for(unsigned int i=0; i<=degree; i++)
c.coefficients[i]=x*coefficients[i];
return c;
}
template <typename T>
const polynomial<T> polynomial<T>::operator-() const //odejmowanie unarne
{
return (-1)*(*this);
}
template <typename T>
const polynomial<T> polynomial<T>::operator-(const polynomial<T> & p) const
{
return ((*this)+(-p));
}
template <typename T>
const polynomial<T> polynomial<T>::operator*(const polynomial<T> & p) const // mnozenie wielomianow przez siebie
{
polynomial c(degree + p.degree);
for(unsigned int i=0; i<=degree; i++)
for(unsigned int j=0; j<=p.degree; j++)
c.coefficients[i+j] += coefficients[i] * p.coefficients[j];
return c;
}
template <typename T>
polynomial<T> & polynomial<T>::operator+=( const polynomial<T> & p )
{
*this=*this+p;
return (*this);
}
template <typename T>
polynomial<T> & polynomial<T>::operator-=( const polynomial<T> & p )
{
*this=*this+(*this+(-p));
return (*this);
}
template <typename T>
polynomial<T> & polynomial<T>::operator*=( const polynomial<T> & p )
{
*this=*this*p;
return (*this);
}
template <typename T>
polynomial<T> & polynomial<T>::operator*=( T x )
{
*this=x*(*this);
return (*this);
}
template <typename T>
const polynomial<T> operator*=( T x, polynomial<T> & p )
{
p=p*x;
return p;
}
template <typename T>
bool polynomial<T>::operator==( const polynomial<T> & p )
{
bool ch = false;
if( degree != p.degree )
return 0;
else
{
for(unsigned int i=0; i<=degree; i++ )
{
ch = false;
if ( coefficients[i] == p.coefficients[i] )
ch = true;
else
return 0;
}
}
return ch;
}
template <typename T>
bool polynomial<T>::operator!=( const polynomial<T> & p )
{
bool a;
a = ((*this) == p);
if(a)
return 0;
return 1;
}
template <typename T>
bool polynomial<T>::operator<( const polynomial<T> & p )
{
bool ch = false;
if( degree > p.degree )
return 0;
if( degree < p.degree )
return 1;
if ( degree == p.degree )
{
for ( int i=degree; i>=0; i-- )
{
if ( coefficients[i] < p.coefficients[i] )
return true;
if ( coefficients[i] > p.coefficients[i] )
return false;
}
}
return 0;
}
template <typename T>
bool polynomial<T>::operator>( const polynomial<T> & p )
{
if( degree < p.degree )
return 0;
if( degree > p.degree )
return 1;
if ( degree == p.degree )
{
for ( int i=degree; i>=0; i-- )
{
if ( coefficients[i] > p.coefficients[i] )
return 1;
if ( coefficients[i] < p.coefficients[i] )
return 0;
}
}
return 0;
}
template <typename T>
bool polynomial<T>::operator<=( const polynomial<T> & p )
{
return !((*this) > p);
}
template <typename T>
bool polynomial<T>::operator>=( const polynomial<T> & p )
{
return !((*this) < p);
}
的main.cpp
#include "polynomial.h"
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
/** Główna funkcja programu testującego klasę {\link TablicaBool TablicaBool}
*/
int main(int argc, char *argv[])
{
try
{
//polynomial<int> a(3), b(2);
//a+=b;
if (argc != 5)
throw MojException( "zla liczba argumentow w linii polecen" ); //sprawdzanie czy ilosc argumentow jest wlasciwa
}
catch (MojException e)
{
cout << e.what() << endl;
system ("PAUSE");
return 1;
}
polynomial<int>;
double stopien; // zmienna sluzaca do zapisu stopnia wielomianu z pliku
double stopien2;
int k = 0; // zmienna do liczby wspolczynnikow
int x_plik; // zmienna sluzaca do zapisu wartosci x z pliku
int x2_plik; // zmienna sluzaca do zapisu wartosci x z pliku
int x_wartosc; // zmienna sluzaca do obliczenia wartosci wielomianu w punkcie
int wartosc_wspolczynnika1; // zmienna sluzaca do wylistowania wspolczynnika
int wartosc_wspolczynnika2; // zmienna sluzaca do wylistowania wspolczynnika
int x_mnoznik; // zmienna sluzaca do mnozenia wielomianu
double wspolczynnik; // zmienna sluzaca do zapisu wspolczynnika
double wspolczynnik2; // zmienna sluzaca do zapisu wspolczynnika
string plik(argv[1]);
ifstream plik_we(plik); // plik_we - nazwa strumienia
string plik0(argv[2]);
ifstream plik0_we(plik0);
string plik1(argv[3]);
ofstream plik1_we(plik1);
string plik2(argv[4]);
ofstream plik2_wy(plik2);
string linijka; //przechowywanie linijek
string linijka2; //przechowywanie linijek
double stopientmp1;
//T stopientmp2;
try
{
if (plik_we.good() && plik0_we.good()) //good jest metoda wywolywana na rzecz obiektu, sprawdza czy plik zostal otwarty pomyslnie
{
getline(plik_we,linijka); // odczytujemy linijka po linijce
istringstream tmp(linijka); // konwersja string na int
getline(plik0_we,linijka2);
istringstream tmp2(linijka2);
tmp >> stopien;
stopientmp1=stopien;
tmp2 >> stopien2;
stopientmp1=stopien2;
if (stopien < 0 || stopien != int(stopien) ) throw MojException("stopien nie jest naturalny"); // jesli stopien mniejszy od 0, zmiennoprzecinkowy lub litera to blad
if (stopien2 < 0 || stopien2 != int(stopien2) ) throw MojException("stopien nie jest naturalny"); // jesli stopien mniejszy od 0, zmiennoprzecinkowy lub litera to blad
while (!plik_we.eof()) // robi tak dlugo az nie jestesmy na koncu pliku
{
getline(plik_we,linijka);
k = k + 1;
}
if (stopien + 1 != k) throw MojException("liczba wspolczynnikow niezgodna ze stopniem wielomianu");
plik_we.close();
k=0;
while (!plik0_we.eof()) //robi tak dlugo az nie jestesmy na koncu pliku
{
getline(plik0_we,linijka2);
k = k + 1;
}
if (stopien2 + 1 != k) throw MojException("liczba wspolczynnikow niezgodna ze stopniem wielomianu");
}
plik0_we.close();
ifstream plik_we(plik);
ifstream plik0_we(plik0);
if (plik_we.good() && plik0_we.good() && plik1_we.good() && plik2_wy.good())
{
getline(plik_we,linijka);
istringstream tmp(linijka);
getline(plik0_we,linijka2);
istringstream tmp2(linijka2);
tmp >> stopien;
tmp2 >> stopien2;
polynomial<int> p=polynomial<int>(stopien);
polynomial<int> p2=polynomial<int>(stopien2);
while (!plik_we.eof())
{
getline(plik_we,linijka);
istringstream tmp(linijka);
tmp >> wspolczynnik;
if( tmp.fail()) throw MojException("wspolczynniki nie sa liczbowe");
p.setCoefficient(stopien,wspolczynnik); // ustawia współczynnik przy potedze
stopien = stopien - 1; // zmniejszanie stopnia wielomianu z kazdym nastepnym wykonaniem petli
}
while (!plik0_we.eof())
{
getline(plik0_we,linijka2);
istringstream tmp2(linijka2);
tmp2 >> wspolczynnik2;
if(tmp2.fail() ) throw MojException("wspolczynniki nie sa liczbowe");
p2.setCoefficient(stopien2,wspolczynnik2); // ustawia współczynnik przy potedze
stopien2 = stopien2 - 1; // zmniejszanie stopnia wielomianu z kazdym nastepnym wykonaniem petli
}
cout<<"P(x) = "<<p<<endl; // wypisanie wielomianu na ekranie
cout<<"P2(x) = "<<p2<<endl<<endl; // wypisanie wielomianu na ekranie
//sprawdzanie dzialania operatorow
cout << "Podaj liczbe dla ktorej maja byc obliczone wartosci wielomianow: "; // wartosc wielomianu w punkcie
cin >> x_wartosc;
cout << "P("<<x_wartosc<<") = "<< p(x_wartosc) << endl;
cout << "P2("<<x_wartosc<<") = "<< p2(x_wartosc) << endl;
cout << endl;
polynomial<int> pprzy=p2; //przypisanie wielomianu
cout << "Przypisanie wielomianu P=P2"<<endl;
cout<<"P(x) = "<<p2<<endl;
cout << endl;
polynomial<int> pdod = p+p2;
cout << "P(x)+P2(x) = " << pdod << endl;
polynomial<int> pmnoz = 2.0*p;
cout << "2*P(x) = " << pmnoz << endl;
polynomial<int> pmnoz2 = p2*2.0;
cout << "P(x)*2 = " << pmnoz2 << endl;
polynomial<int> podj = -p;
cout << "-P(x) = " << podj << endl;
polynomial<int> podj2 = p2+podj;
cout << "P2(x)+(-P(x)) = " << podj2 << endl;
polynomial<int> pwym=p*p2;
cout << "P(x)*P2(x) = " << pwym << endl;
polynomial<int> podjj=p-p2;
cout << "P(x)-P2(x) = " << podjj << endl;
cout << endl;
cout << "Podaj wartosc potegi w wielomianie nr 1 dla ktorego wypisac wspolczynnik: " ; // wypisanie elementu tablicy (wspolczynnika przy danej potedze)
cin >> wartosc_wspolczynnika1;
cout << "Wartosc wspolczynnika to: "<< p[wartosc_wspolczynnika1] << endl;
cout << "Podaj wartosc potegi w wielomianie nr 2 dla ktorego wypisac wspolczynnik: " ;
cin >> wartosc_wspolczynnika2;
cout << "Wartosc wspolczynnika to: "<< p2[wartosc_wspolczynnika2] << endl;
cout << endl;
polynomial<int> pp=(p2+=p);
cout << "dzialanie += : " << pp << endl;
polynomial<int> po=(p2-=p);
cout << "dzialanie -= : " << po << endl;
polynomial<int> pm=(p2*=p);
cout << "dzialanie *= : " << pm << endl;
cout << "dzialanie *= : " << polynomial<int> (p2*=2) << endl;
cout << "dzialanie *= : " << polynomial<int> (2*=p) << endl;
cout << "operator == : " << (p==p2) << endl;
cout << "operator != : " << (p!=p2) << endl;
cout << "operator < : " << (p<p2) << endl;
cout << "operator > : " << (p>p2) << endl;
cout << "operator <= : " << (p<=p2) << endl;
cout << "operator >= : " << (p>=p2) << endl;
}
else throw MojException("blad wczytywania pliku");
}
catch(out_of_range e)
{
cout<<e.what()<<endl;
}
catch(MojException w)
{
cout<<w.what()<<endl;
}
catch (...)
{
cout << "nieznany blad" << endl;
plik_we.close();
plik0_we.close();
plik1_we.close();
plik2_wy.close();
system ("PAUSE");
return 1;
}
plik_we.close(); //zamyka polaczenie z plikiem
plik0_we.close();
plik1_we.close();
plik2_wy.close();
system ("PAUSE");
return 0;
}
和错误:
1>zad 8 - main.obj : error LNK2019: unresolved external symbol "class polynomial<int> const __cdecl operator*=(int,class polynomial<int> &)" (??X@YA?BV?$polynomial@H@@HAAV0@@Z) referenced in function __catch$_main$0
1>zad 8 - main.obj : error LNK2019: unresolved external symbol "class polynomial<int> const __cdecl operator*(int,class polynomial<int> const &)" (??D@YA?BV?$polynomial@H@@HABV0@@Z) referenced in function __catch$_main$0
1>zad 8 - main.obj : error LNK2019: unresolved external symbol "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class polynomial<int> &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@AAV?$polynomial@H@@@Z) referenced in function __catch$_main$0
1>F:\asik\last\zad08\Debug\zad08.exe : fatal error LNK1120: 3 unresolved externals
但是当我的主要有点瘦时,它正在工作: 主shorter.cpp
#include "polynomial.h"
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
/** Główna funkcja programu testującego klasę {\link TablicaBool TablicaBool}
*/
int main(int argc, char *argv[])
{
try
{
polynomial<int> a(5), b(2);
a+=b;
}
catch(out_of_range e)
{
cout<<e.what()<<endl;
}
catch(MojException w)
{
cout<<w.what()<<endl;
}
catch (...)
{
cout << "nieznany blad" << endl;
system ("PAUSE");
return 1;
}
system ("PAUSE");
return 0;
}
我不知道如何让它发挥作用并使错误消失:(