Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2013, 06:22   #1
*Fantom*
Пользователь
 
Регистрация: 28.05.2013
Сообщений: 32
По умолчанию ошибки при компиляции с++

Программа перегрузки операторов. При компиляции выдает следующие ошибки
error LNK1120: неразрешенных внешних элементов: 1
error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall stud::stud(char,float,float,int)" (??0stud@@QAE@DMMH@Z) в функции _main
Код программы:
Код:
#include <stdio.h>
#include<conio.h>
#include <stdlib.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <math.h>
#include <stdio.h>
#include <iomanip>
#include <time.h>
#include <clocale>
#include <fstream>
#include<iostream>
#include<cstdlib>
#define N 3
using namespace std;
class stud{
	char klass;
	float mass;
	float chast;
	int chisl;
public:
stud operator = (stud &o1);
int operator == (stud &o1);
stud operator + (stud &o1);
stud() { mass=0; chast=0; chisl=0;}
friend ostream & operator<<(ostream &stream, stud &o1);
friend istream & operator>>(istream &stream, stud &o1);
friend void shapka(void);
friend void linebuild(void);
friend int isvalid(int a, int b);
stud(char klass, float mass, float chast, int chisl	);
	void setall(char a,float m, float n,int s){
	klass=a;
	mass=m;
	chast=n;
	chisl=s;}
	void getall( char &a,float &m, float &n, int &s){
		a=klass;
		m=mass;
		n=chast;
		s=chisl;
	   cout<<a<<" ";
       cout<<m<<" ";
       cout<<n<<" ";
       cout<<s<<" ";
	//cout<<a<<m<<n<<s;
	}
	void showall(){
	cout<<klass<<" ";
 cout<<mass<<" ";
 cout<<chast<<" ";
 cout<<chisl<<" ";}
};
int isvalid(int a, int b){
  if (((a>N-1) || (a<0)) || ((b>N-1) ||(b<0)))
   {
    cout<<"Ошибка! Экземпляра с таким индексом не существует.\n";
    getch();
    return -1;
   }
  else if (a==b)
   {
    cout<<"Ошибка! Экземпляр не может быть записан сам в себя.\n";
    getch();
    return -2;
   }
 return 0;
}
stud stud::operator = (stud &o1) {
 klass=NULL;
 klass = o1.klass;
  mass = o1.mass;
  chast= o1.chast;
 chisl = o1.chisl;
 return o1;
}
int stud::operator == (stud &o1) {
 if (chisl != o1.chisl) {cout << "Данные экземпляры класса не равны."; getch();}
 else if (ceil(chast)!=ceil(o1.chast)) {cout << "Данные экземпляры класса не равны."; getch();}
 else if (ceil(mass)!=ceil(o1.mass)) {cout << "Данные экземпляры класса не равны."; getch();}
 else if (klass!=o1.klass) {cout << "Данные экземпляры класса не равны."; getch();}
 else cout<<"Экземпляры класса равны."; getch();
 return 0;
}
stud stud::operator + (stud &o1) {
	stud tr;
	int i,j;
 klass=NULL;
tr.klass='+';
 tr.mass=mass+o1.mass;
 tr.chast=chast+o1.chast;
 tr.chisl=chisl+o1.chisl;
 return tr;
}
 ostream & operator<<(ostream &stream, stud &o1) {
  shapka();
  stream<<"|"<<setw(10)<<o1.klass<<"  |  ";
  stream<<setw(5)<<o1.mass<<"|";
  stream<<setw(18)<<o1.chast<<"  |";
  stream<<setw(17)<<o1.chisl<<"  |"; cout<<endl;
  linebuild();
 return stream;
 }
 istream & operator>>(istream &stream, stud &o1) {
 cout<<"Введите Спектральный класс,Приблизительнаю масса,Часть %, Численность : \n";
 stream>>o1.klass;
 stream>>o1.mass;
 stream>>o1.chast;
 stream>>o1.chisl;
 return stream;
}
void shapka(void)
{
 cout<<"__________________________________________________________________________\n";
 void linebuild(void) {
 cout<<"\n|--------------------------------------------------------------------|\n";
}
void main(){
	setlocale(LC_ALL, "Russian");
		char klass;
	float mass;
	float chast;
	int chisl;
	stud ob[N];
	int i,k;
	int s1;
	int q,q1;

	stud obj[N]={stud('O',32,0.0002,5500),
		       stud('F',1.25,2.9,1200),
		       stud('M',0.2,73.2,2930)};
 cout.precision(2);
  for (i=0; i<N; i++) {
  obj[i].showall();
  cout<<"\n";
  }
 cin>>q;
 cin>>q1;
 if (isvalid(q, q1)!=0) exit(-1);
 obj[q] = obj[q1];  
  for(i=0; i<N; i++) {
   obj[i].showall();
   cout<<"\n";
  }
 cout<<"\nПерегрузка оператора соответствия '=='.\n";
 cout<<"Введите номера экземпляров класса, которые надо сравнить>\n";
 cin>>q;
 cin>>q1;
 if (isvalid(q, q1)!=0) exit(-1);
 obj[q] == obj[q1];  

 cout<<"\nПерегрузка оператора суммы '+'.\n";
 cout<<"Введите номера экземпляров класса, которые надо сложить>\n";
 cin>>q;
 cin>>q1;
 stud temp;
 if (isvalid(q, q1)!=0) exit(-1);
 temp=obj[q]+obj[q1];  
   cout<<"Спектральный класс,Приблизительнаю масса,Часть %, Численность : ";
   temp.getall(klass,mass,chast,chisl);

 cout<<"\nПерегрузка оператора потокового ввода '>>'.";
 cout<<"\nВведите номер экземпляра класса: ";
 cin>>q;
 if ((q>N-1)||(q<0)) {cout<<"Ошибка! Экземпляра с таким индексом не существует."; getch(); exit(-1);}
 cin>>obj[q]; 

 cout<<"\nПерегрузка оператора потокового вывода '<<'.";
 cout<<"\nВведите номер экземпляра класса: ";
 cin>>q;
 if ((q>N-1)||(q<0)) {cout<<"Ошибка! Экземпляра с таким индексом не существует."; getch(); exit(-1);}
 cout<<obj[q]; 

 getch();
 
}
*Fantom* вне форума Ответить с цитированием
Старый 29.10.2013, 08:37   #2
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

Код:
#include <stdio.h>
#include<conio.h>
#include <stdlib.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <math.h>
#include <stdio.h>
#include <iomanip>
#include <time.h>
#include <clocale>
#include <fstream>
#include<iostream>
#include<cstdlib>
#define N 3
а зачем подключать по два раза библиотеки?


а по ошибкам...
где то что-то недоопределено...
проблема частая и уже решалась
например тут
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 29.10.2013 в 08:58.
SaLoKiN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибки при компиляции Lers Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 05.06.2013 21:25
Ошибки при компиляции sarkolk Общие вопросы C/C++ 27 22.08.2012 18:54
Ошибки при компиляции Tinny Общие вопросы C/C++ 7 30.06.2011 10:00
Ошибки при компиляции vader2 Общие вопросы Delphi 11 29.09.2010 16:33
ошибки при компиляции |{ot Общие вопросы Delphi 14 02.08.2008 01:20