Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Ошибка Unresolved external


Автор: Recev 29.5.2011, 09:06
Разбил программу на 3 файла и появилась ошибка.
[ILINK32 Error] Error: Unresolved external 'operator >>(std::basic_istream<char, std::char_traits<char> >&, drob&)' referenced from F:\...\DEBUG\WIN32\DRIVER.OBJ
Код:
drob.h:
Код

#include <conio.h>
#include <iostream.h>
#include <fstream.h>
#include <math.h>

#ifndef drob_h
#define drob_h1
class drob
{
friend istream &operator>> (istream &, drob &);
friend ostream &operator<< (ostream &, const drob &);
int chis, znam; 
public:
drob() : chis(0), znam(0) {} 
drob(int ch, int zn): chis(ch), znam(zn) {}
void work(drob &);
int operator > (drob);
...
};
#endif


drob.cpp:
Код

#include <conio.h>
#include <iostream.h>
#include <fstream.h>
#include <math.h>
#include "drob.h"

istream &operator>> (istream &input, drob &dr)
{
cout << "-> ";
input >> dr.chis;
input.ignore(1);
input >> dr.znam;
input.ignore();
if (dr.chis == 0 || dr.znam == 0)
{
cout << "Nevirny format droby!\n-> ";
input >> dr.chis;
input.ignore(1);
input >> dr.znam;
input.ignore();
}
return input;
}

ostream &operator<< (ostream & out, const drob &dr)
{
out << dr.chis << "/" << dr.znam;
return out;
}
.....


driver.cpp:
Код

#include <conio.h>
#include <iostream.h>
#include <fstream.h>
#include <math.h>
#include "drob.h"

void main()
{
clrscr();
drob d1, d2;
cin >> d1;
cout << d1;
getch();
}

Как исправить?

Автор: borisbn 29.5.2011, 09:29
drob.cpp включен в проект ?

Автор: volatile 29.5.2011, 09:29
Скорей всего вы забыли добавить файлы в проект. Разбить разбили, а добавить новые файлы, или хотябы один из них, забыли.
Код подробно не смотрел, но если компилилось до разбиения, а ошибка "Error: Unresolved externa" возникла после, то скорей всего причина именно в этом.

Добавлено через 1 минуту и 35 секунд
упс, пока писал borisbn, уже ответил. Сорри

Автор: Artemon 29.5.2011, 09:31
VS2005 нормально такой код скомпилит и слинкует, какой у тебя компилятор ?

Автор: borisbn 29.5.2011, 09:32
 smile 
volatile, нужно перед написанием сообщения делать
Код

forum.vingrad.ru.lock();

а после написания
Код

forum.vingrad.ru.unlock();

smile  smile 

Автор: Recev 29.5.2011, 09:43
Компилирую с RAD Studio XE, потом на турбо C++ переведу.
Я переместил их из drob.cpp в drob.h и все стало нормально.
Спасибо за помощь

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)