Форум программистов, компьютерный форум CyberForum.ru

Прошу содействия. ссылка на неразрешенный внешний символ "public: void - C++

Восстановить пароль Регистрация
 
Predatorxxx
0 / 0 / 0
Регистрация: 22.12.2011
Сообщений: 5
14.10.2013, 17:15     Прошу содействия. ссылка на неразрешенный внешний символ "public: void #1
надо просто поменять char* a на шаблон класса, в котором задается тип массива. Это класс для работы с большими числами. помогите пожалуйста.


//файл Header.h


/* //надо просто поменять char* a на шаблон класса, в котором задается тип массива
class large
{ int len;
char* a;
bool znak;
public:
void Nul();
large (int=0);
large operator +(large b); / * сложение * /
large operator *(int b); / * сложение * /
large operator *(large b); / * сложение * /
void Print();
large operator =(int b);
large operator =(large b);
bool compare(large b);
large operator -(large b); / * сложение * /
};*/



template <typename T> class Tlarge //может класс поставить
{ int len;
T* a;
bool znak;
public:
void Nul();
Tlarge<T> (int=0);
Tlarge<T> operator +(Tlarge<T> b); /* сложение */
Tlarge<T> operator *(int b); /* сложение */
Tlarge<T> operator *(Tlarge<T> b); /* сложение */
void Print();
Tlarge<T> operator =(int b);
Tlarge<T> operator =(Tlarge<T> b);
bool compare(Tlarge b);
Tlarge<T> operator -(Tlarge<T> b); /* сложение */
};

#include "large.h"
#include <iostream>
#include <conio.h>
using namespace std;

template<typename T> Tlarge<T> Tlarge<T>::operator =(int b)
{
int vsp[30];

for (int i=0; i<len; i++)
a[i]=0;
int k=0;
while (b!=0)
{
a[k]=b%10;
b=b/10;
k++;
}

return *this;
}

template <typename T> Tlarge<T> Tlarge<T>::operator =(Tlarge b) /* присваивание */
{ int min;

for (int i=0; i<len; i++)
a[i]=0;

if (len < b.len ) min = len; else min = b.len;

for(int i=0;i<min;i++) a[i]=b.a[i];

znak=b.znak;
return *this;
}

int maxi(int a, int b)
{
if (a>b) return a; else return b;
}

template <typename T> void Tlarge<T>::Nul()
{
for (int i=0;i<len;i++) a[i]=NULL;
}

template <typename T> Tlarge<T>::Tlarge(int len1)
{
znak=true;
a = new T (len1);
len=len1;
Nul();
}

template <typename T> void Tlarge<T>::Print()
{
int flag=0;
if (znak==false) cout<<'-';
for (int i=len-1;i>=0;i--)

{if (a[i]!='0' ||a[i]!=NULL ) flag=1;

if (flag==1) cout<<a[i]+0;
}
cout<<"\n";
}

template <typename T> Tlarge<T> Tlarge<T>::operator +(Tlarge b)
{int n, Vsp, p, min, flag;
n=maxi(len, b.len)+1;
if (len<=b.len)
{ min = len; flag=0;}
else
{ min=b.len; flag=1;}

Tlarge c(n);
p=0;
for (int i=0; i<min; i++)
{Vsp=a[i]+b.a[i]+p;
p=Vsp/10;
c.a[i]=Vsp%10;
}
for (int i=min; i<n-1; i++)
{if (flag==0) Vsp=b.a[i]+p;
else Vsp=a[i]+p;
p=Vsp/10;
c.a[i]=Vsp%10;
}
if (p!=0)
{Vsp=p;
c.a[n-1]=Vsp%10;}
return c;
}


template <typename T> Tlarge<T> Tlarge<T>::operator *(int b)
{int m, n, Vsp, p;
Tlarge c(len+1);
c.Nul();
p=0;
for (int i=0;i<=len-1;i++)
{Vsp=a[i]*b+p;
c.a[i]= Vsp%10;
p=Vsp/10;}
int i=len;
while (p) {c.a[i]=p%10; p/=10; i++;}
return c;
}

int chartoint(char c)
{ int a;
switch (c)
{ //с int должно работать!!...
case 0: a=0; break;
case 1: a=1; break;
case 2: a=2; break;
case 3 : a=3; break;
case 4: a=4; break;
case 5: a=5; break;
case 6: a=6; break;
case 7: a=7; break;
case 8: a=8; break;
case 9: a=9; break;
default: a=0; break;
}
return a;
}

template <typename T> Tlarge<T> Tlarge<T>::operator *(Tlarge b)
{int m, n, Vsp, p, j ;
n=len+b.len;
Tlarge c(n);
c.Nul();
c=c+ (*this) * chartoint(b.a[b.len-1]);
for (j=b.len-2; j>=0; j--)
{
c=c*10;
c=c+ (*this) * chartoint(b.a[j]);
}
return c;
}


template <typename T> bool Tlarge<T>::compare(Tlarge b)
{ //true a>b false a<b
int i,min,flag;
if (len> b.len) {flag=0 ; min=b.len;} else {flag=1; min=len;}

if (flag==0)
{
for (i=len-1; i>=min; i--)
if (chartoint(a[i])>0) return true;
}
else
{
for (i=b.len-1; i>=min; i--)
if (chartoint(b.a[i])>0) return false;
}

for (i=min-1; i>=0; i--)
if (a[i]>b.a[i]) return true;
else if (a[i]<b.a[i]) return false ;

return true ; //if equal)
}

template <typename T> Tlarge<T> Tlarge<T>::operator-(Tlarge b)
{
int i,min,flag,flag1,max,p,vsp;

if (len> b.len) {flag=0 ; min=b.len; max=len;} else {flag=1; min=len; max = b.len;}

Tlarge c(max);

if (compare(b)==true)
{ flag1=0; }
else
{ flag1=1; c.znak=false;} //flag1 kto bolshe a>b 0 , a<b 1
p=0;
if (flag1==0)
{
for (i=0; i<min; i++)
{
vsp = chartoint(a[i])-chartoint(b.a[i])-p;
p=0;
if (vsp<0) {vsp+=10; p=1;}
c.a[i]=vsp;
}

for (i=min; i<max-1; i++)
{
vsp = chartoint(a[i])-p;
if (vsp<0) {vsp+=10; p=1;}
c.a[i]=vsp;
}
}
else
{
for (i=0; i<min; i++)
{
vsp = chartoint(b.a[i])-chartoint(a[i])-p;
p=0;
if (vsp<0) {vsp+=10; p=1;}
c.a[i]=vsp;
}

for (i=min; i<max-1; i++)
{
vsp = chartoint(b.a[i])-p;
if (vsp<0) {vsp+=10; p=1;}
c.a[i]=vsp;
}
}

return c;
}



// 333333.cpp: определяет точку входа для консольного приложения.
//
#include <iostream>
#include <conio.h>

#include "large.h"

using namespace std;

void main()
{
Tlarge<char> a(22),b(22),c(22);

a=240;
b=300;
c=a-b;
c.Print();


getch();

}



1> Для всех выходных данных обновления не требуется.
1>333333.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall Tlarge<char>::Print(void)" (?Print@?$Tlarge@D@@QAEXXZ) в функции _main
1>333333.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: class Tlarge<char> __thiscall Tlarge<char>::operator=(class Tlarge<char>)" (??4?$Tlarge@D@@QAE?AV0@V0@@Z) в функции _main
1>333333.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: class Tlarge<char> __thiscall Tlarge<char>::operator-(class Tlarge<char>)" (??G?$Tlarge@D@@QAE?AV0@V0@@Z) в функции _main
1>333333.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: class Tlarge<char> __thiscall Tlarge<char>::operator=(int)" (??4?$Tlarge@D@@QAE?AV0@H@Z) в функции _main
1>333333.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Tlarge<char>::Tlarge<char>(int)" (??0?$Tlarge@D@@QAE@H@Z) в функции _main
1>D:\ООП\Контрольная работа 2\Debug\333333.exe : fatal error LNK1120: 5 неразрешенных внешних элементов
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2013, 17:15     Прошу содействия. ссылка на неразрешенный внешний символ "public: void
Посмотрите здесь:

Странная ошибка - "ссылка на неразрешенный внешний символ" C++
C++ обработка ошибок. "ссылка на неразрешенный внешний символ"
Циклы с выключателем и ошибка "ссылка на неразрешенный внешний символ" C++
C++ error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall KDocument::Open(char const *)" в функции _WinMain@16
C++ Дружественная функция шаблон и ошибка "Ссылка на неразрешенный внешний символ"
C++ Ошибка линкера: ссылка на неразрешенный внешний символ "public: int __thiscall stack<int>::pop(void)"
C++ LNK2019: ссылка на неразрешенный внешний символ "void __cdecl run(void)" (?run@@YAXXZ) в функции _wmain
Класс "Зачетка": Ссылка на неразрешенный внешний символ C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 12:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru