Click here to Skip to main content
15,888,351 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
QuestionRe: remove program from start up Pin
Alinuxcs2-Jan-07 3:27
Alinuxcs2-Jan-07 3:27 
QuestionExposing a PERF_AVERAGE_TIMER performance counter [modified] Pin
Martin.Lanza1-Jan-07 12:30
Martin.Lanza1-Jan-07 12:30 
QuestionHow to prevent Screen Saver from turning on Pin
spiritofklanawa1-Jan-07 7:10
spiritofklanawa1-Jan-07 7:10 
AnswerRe: How to prevent Screen Saver from turning on Pin
PJ Arends1-Jan-07 7:27
professionalPJ Arends1-Jan-07 7:27 
AnswerRe: How to prevent Screen Saver from turning on Pin
Michael Dunn1-Jan-07 9:43
sitebuilderMichael Dunn1-Jan-07 9:43 
GeneralRe: How to prevent Screen Saver from turning on Pin
PJ Arends1-Jan-07 9:57
professionalPJ Arends1-Jan-07 9:57 
GeneralRe: How to prevent Screen Saver from turning on Pin
Michael Dunn1-Jan-07 10:03
sitebuilderMichael Dunn1-Jan-07 10:03 
Questionfatal error LNK1120: 1 unresolved externals in visual c++ 2005 Pin
x-coder20071-Jan-07 6:19
x-coder20071-Jan-07 6:19 
helo all

i wrote a list like class , i tested it with int type and it works but now i want to make it a template.
when i change it to template i got :
Error 4 error LNK2019: unresolved external symbol "public: __thiscall vector_eu<int>::vector_eu<int>(void)" (??0?$vector_eu@H@@QAE@XZ) referenced in function _wmain

from all the functions i declared outside the class.
i tried to put all the code in a singal file and it works fine, but i don't want this .
i want to have the class declarations in a header file the functions in a CPP file so if i want to use the list later all i have to do is to includ the header file and add the CPP file into my project.

here is the code :

//define element.h<br />
<br />
#include <iostream><br />
<br />
using namespace std;<br />
<br />
template <typename tip><br />
 class element <br />
{public:<br />
 tip val;<br />
 int initializat; ///  arata daca un element e initializat sau nu<br />
element<tip>* point_front;<br />
element<tip>* point_back;<br />
<br />
};<br />
<br />
<br />
template <typename tip><br />
class vector_eu<br />
{<br />
public:<br />
     	vector_eu();  //constructor  <br />
        int push_bak(tip);//adauga un element in coada vectorului   push_bak(element)<br />
        int insert(tip,int);//adauga un element intr-un  loc specificat insert(element,pozitie)<br />
        int erace(int);//sterge un element dintr-o pozitie specificata  erace(pozitie)<br />
        int erace(int,int);//sterge un nr de caractere incepand cu o pozitie specificata  erace(pozitie,nr_de_elemente)<br />
        int clear(void); //sterge tot vectorul<br />
		int get(int); <br />
<br />
private:<br />
element<tip>* primul_element;<br />
int nr_de_elemente;<br />
element<tip>* ultimul_element;<br />
<br />
element<tip>* get_addres(int);<br />
<br />
<br />
};<br />
<br />
<br />
<br />
<br />
<br />
///implement.cpp<br />
<br />
<br />
#include "stdafx.h"<br />
#include <iostream><br />
#include <string><br />
#include "define element.h"<br />
using namespace std;<br />
<br />
void error(string s)<br />
{<br />
	cout<<s<<endl;<br />
}<br />
<br />
<br />
template <typename tip><br />
inline <br />
vector_eu<tip>::vector_eu()<br />
{<br />
	this->nr_de_elemente=0;<br />
	this->primul_element=new element<tip>;  // creaza primul element  vid<br />
	this->primul_element->initializat=0; <br />
	this->primul_element->point_back=0; // pointerul spre elemntul precedent pt primul elemnt este 0<br />
	this->primul_element->point_front=0;// daca pointerul spre urmatorul element este 0 --> nu exita <br />
	this->ultimul_element=this->primul_element;  <br />
}<br />
<br />
<br />
<br />
template <typename tip><br />
inline<br />
int vector_eu<tip>::push_bak(tip val)<br />
{<br />
	if((this->nr_de_elemente)==0)<br />
	{<br />
		(this->primul_element)->initializat=1;<br />
		(this->primul_element)->val=val;<br />
		++(this->nr_de_elemente);<br />
		return 1;<br />
	}<br />
	else<br />
	{<br />
element<tip> * temp=new element;<br />
temp->initializat=1;<br />
temp->val=val;<br />
temp->point_front=0;<br />
temp->point_back=(this->ultimul_element);<br />
(this->ultimul_element)->point_front=temp;<br />
(this->ultimul_element)=temp;<br />
++(this->nr_de_elemente);<br />
return 1;<br />
	}<br />
}<br />
<br />
<br />
<br />
template <typename tip><br />
inline<br />
element<tip>* vector_eu<tip>::get_addres(int n)   ///   iterator  incepe de la 0<br />
{<br />
	if (this->nr_de_elemente==0)<br />
	{<br />
	  error("nu exista elemente");<br />
	  return 0;<br />
	}<br />
	else<br />
	{  if(n<this->nr_de_elemente)<br />
	    {<br />
		 if(n==0) return this->primul_element;<br />
		 else<br />
		 {<br />
			 if(n<0){ error("iterator<0");return 0;}<br />
			 else<br />
			 {<br />
                element<tip>*temp=this->primul_element;    <br />
			     while(n>0)<br />
				 {<br />
					 temp=temp->point_front;<br />
					 --n;<br />
				 }<br />
				 return temp;<br />
			 }<br />
		 }<br />
	    }<br />
	   else <br />
	   {<br />
        error("iterator>nr_de_elemente");<br />
	   }<br />
	}<br />
	<br />
  <br />
}<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
template <typename tip><br />
inline<br />
int vector_eu<tip>::get(int n)<br />
{<br />
    if(this->nr_de_elemente>n)<br />
	{<br />
		if(n>-1)<br />
		{<br />
	      element<tip> * temp =get_addres(n);<br />
          return temp->val;<br />
		}<br />
		else {<br />
			  error("iterator<0");<br />
		      return 0;<br />
		     }<br />
	}<br />
	else {<br />
		  error("iterator>nr_de_elemente");<br />
	      return 0;<br />
	     }<br />
}<br />
<br />
<br />
	<br />
<br />
template <typename tip><br />
inline<br />
int vector_eu<tip>::clear(void)  <br />
{<br />
	if(this->nr_de_elemente!=0)<br />
	{<br />
		if(this->nr_de_elemente>0)<br />
		{<br />
		element<tip>* temp=this->ultimul_element;<br />
		while(this->nr_de_elemente>1)<br />
		{<br />
			temp=temp->point_back;<br />
			delete (temp->point_front);<br />
			--(this->nr_de_elemente);<br />
		}<br />
		temp->point_front=0;<br />
		temp->initializat=0;<br />
		temp->val=0;<br />
		(this->ultimul_element)=(this->primul_element);<br />
		(this->nr_de_elemente)=0;<br />
        return 1;<br />
		}<br />
		else {error("nr_de_elemente<0");return 0;}<br />
	}<br />
	else<br />
	return 1;<br />
}<br />
<br />
<br />
<br />
template <typename tip><br />
inline<br />
int vector_eu<tip>::erace(int n)    <br />
{<br />
	if(n<this->nr_de_elemente)<br />
	{<br />
		if(n>-1)<br />
		{ <br />
          if(n==0)<br />
		  { <br />
			  if(this->nr_de_elemente==1)<br />
		     {<br />
				 this->clear();<br />
		     }<br />
		      else<br />
		    {<br />
			  element<tip> *temp=this->primul_element;<br />
			  this->primul_element=(this->primul_element)->point_front;<br />
			  (this->primul_element)->point_back=0;<br />
			  delete temp;<br />
			  --(this->nr_de_elemente);<br />
			  return 1;<br />
		    }<br />
		  }<br />
		  else{<br />
			  if((n+1)==this->nr_de_elemente)<br />
			  {<br />
				  element<tip> * temp=this->ultimul_element;<br />
				  ((this->ultimul_element)->point_back)->point_front=0;<br />
				  (this->ultimul_element)=(this->ultimul_element)->point_back;<br />
				  delete temp;<br />
				  --(this->nr_de_elemente);<br />
				  return 1;<br />
			  }<br />
			  else<br />
			      {<br />
		           element<tip> * temp=get_addres(n);<br />
		           (temp->point_back)->point_front=temp->point_front;<br />
	               (temp->point_front)->point_back=temp->point_back;<br />
	               delete temp;<br />
				    --(this->nr_de_elemente);<br />
		           return 1;<br />
			      }<br />
		      }<br />
		}<br />
		else error("iterator<0");<br />
<br />
	}<br />
	else error("iterator>nr_de_elemente");<br />
<br />
	return 0;<br />
}<br />
<br />
<br />
<br />
template <typename tip><br />
inline<br />
int vector_eu<tip>::erace(int n, int r)  ///!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
{ <br />
  if(n<0)<br />
  {<br />
   error("iterator poz<0");<br />
   return 0;<br />
  }<br />
  else<br />
   if(r<0) <br />
   {<br />
    error("iterator lungime<0");<br />
	return 0;<br />
   }<br />
   else<br />
    if(r==0)<br />
	{<br />
      error("iterator lungime = 0");<br />
	}<br />
	else<br />
	if((n+r)>(this->nr_de_elemente))<br />
	{<br />
      error("depaseste dimensiunea");<br />
	  return 0;<br />
	}<br />
	else<br />
	{<br />
	 if(r==1) <br />
	 {<br />
		 erace(n);<br />
		 return 1;<br />
	 }<br />
	 else<br />
      if(n==0)<br />
	  {<br />
		  if(r==(this->nr_de_elemente))<br />
		  {<br />
			  this->clear();<br />
			  return 1;<br />
		  }<br />
		  else<br />
		  {                      <br />
			element<tip> * temp=(this->primul_element);<br />
			for(int i=0;i<r;++i)<br />
			{<br />
				temp=(temp->point_front);<br />
				delete (temp->point_back); <br />
<br />
			}<br />
			(this->primul_element)=temp;<br />
			(this->primul_element)->point_back=0;<br />
			this->nr_de_elemente-=r;<br />
			return 1;<br />
		  }<br />
	  }<br />
	  else<br />
	  {<br />
		  if((n+r)==(this->nr_de_elemente))<br />
		  {<br />
            element<tip> *temp=get_addres(n);<br />
			(this->ultimul_element)=temp->point_back;<br />
			(this->ultimul_element)->point_front=0;<br />
			for(int i=1;i<r;++i)<br />
			{<br />
				temp=temp->point_front;<br />
				delete temp->point_back;<br />
			}<br />
			delete temp;<br />
            this->nr_de_elemente-=r;<br />
			return 1;<br />
		  }<br />
		  else<br />
		  {<br />
			   element<tip> *temp=get_addres(n);<br />
			   element<tip> *temp_2=(get_addres(n-1));<br />
               element<tip> *temp_3=get_addres(n+r);<br />
			  temp_2->point_front=temp_3;<br />
			  temp_3->point_back=temp_2;<br />
			  for(int i=1;i<r;++i)<br />
			  {<br />
				  temp=temp->point_front;<br />
				  delete temp->point_back;<br />
			  }<br />
			  delete temp;<br />
              this->nr_de_elemente-=r;<br />
			  return 1;<br />
		  }<br />
<br />
	  }<br />
	}<br />
}<br />
<br />
<br />
template <typename tip><br />
inline<br />
int vector_eu<tip>::insert(tip val, int n) <br />
{ <br />
	if((n==0)&&(this->nr_de_elemente==0))<br />
		this->push_bak(val);<br />
	else<br />
	if(n>this->nr_de_elemente)<br />
	{<br />
      error("iterator>nr_de_elemente");<br />
	  return 0;<br />
	}<br />
	else<br />
		if(n<0)<br />
		{<br />
         error("iterator<0");<br />
		 return 0;<br />
		}<br />
		else<br />
			if(n==this->nr_de_elemente)<br />
			{<br />
				this->push_bak(val);<br />
				<br />
				return 1;<br />
			}<br />
			else<br />
				if(n==0)<br />
				{<br />
                 element<tip> * temp=new element<tip>();<br />
				 temp->initializat=1;<br />
				 temp->point_back=0;<br />
				 temp->point_front=this->primul_element;<br />
				 (temp->val)=val;<br />
				 (this->primul_element)->point_back=temp;<br />
				 this->primul_element=temp;<br />
				 ++(this->nr_de_elemente);<br />
				 return 1;<br />
				}<br />
				else<br />
				{<br />
                   element<tip> * temp=get_addres(n-1);<br />
                   element<tip> * new_element= new element<tip>();<br />
<br />
				   new_element->initializat=1;<br />
				   new_element->val=val;<br />
<br />
                   new_element->point_front=temp->point_front;<br />
                   (temp->point_front)->point_back=new_element;<br />
                   temp->point_front=new_element;<br />
                   new_element->point_back=temp;<br />
				   ++(this->nr_de_elemente);<br />
				   return 1;<br />
  <br />
				}<br />
<br />
}<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
/// list.cpp <br />
<br />
#include "stdafx.h"<br />
#include "define element.h"<br />
#include <iostream><br />
<br />
using namespace std;<br />
<br />
int _tmain(int argc, _TCHAR* argv[])<br />
{<br />
    int a,b,c;<br />
	<br />
	vector_eu<int> e;<br />
	while(1)<br />
	{   <br />
<br />
		cout<<endl<<endl;<br />
		cout<<"1. push_bak"<<endl; <br />
		cout<<"2. insert"<<endl;<br />
		cout<<"3.clear"<<endl;<br />
		cout<<"4.get"<<endl;<br />
		cout<<"5.erace(int)"<<endl;<br />
		cout<<"6.erace(int,int)"<<endl;<br />
     cin>>a;<br />
   if(a==0) break;<br />
	   switch (a)<br />
	   {<br />
	   case 1:<br />
		   cout<<" val= ";<br />
		   cin>>b;<br />
<br />
		   e.push_bak(b);<br />
		   break;<br />
	   case 2:<br />
		   cout<<"val= ";<br />
		   cin>>b;<br />
		   cout<<" poz= ";<br />
		   cin>>c;<br />
		   e.insert(b,c);<br />
		   break;<br />
	   case 3:<br />
		   e.clear();<br />
		   break;<br />
	   case 4:<br />
		   cout<<"poz= ";<br />
		   cin>>b;<br />
		   cout<<"e["<<b<<"]= "<<e.get(b);<br />
           break;<br />
	   case 5:<br />
		   cout<<"poz= ";<br />
           cin>>b;<br />
		   e.erace(b);<br />
		   break;<br />
	   case 6:<br />
		   cout<<"poz= ";<br />
		   cin>>b;<br />
		   cout<<"lungme= ";<br />
		   cin>>c;<br />
		   e.erace(b,c);<br />
		   break;<br />
     <br />
	   }<br />
	<br />
 	}<br />
     	<br />
	std::system("pause");<br />
	return 0;<br />
}<br />
<br />

AnswerRe: fatal error LNK1120: 1 unresolved externals in visual c++ 2005 Pin
PJ Arends1-Jan-07 7:01
professionalPJ Arends1-Jan-07 7:01 
AnswerRe: fatal error LNK1120: 1 unresolved externals in visual c++ 2005 Pin
toxcct1-Jan-07 8:04
toxcct1-Jan-07 8:04 
AnswerRe: fatal error LNK1120: 1 unresolved externals in visual c++ 2005 Pin
Shouvik Das1-Jan-07 19:28
Shouvik Das1-Jan-07 19:28 
GeneralRe: fatal error LNK1120: 1 unresolved externals in visual c++ 2005 Pin
x-coder20072-Jan-07 7:03
x-coder20072-Jan-07 7:03 
Questionpreassure meter Pin
ahmad al-omar1-Jan-07 5:31
ahmad al-omar1-Jan-07 5:31 
AnswerRefer to the touchpad specifications... Pin
CPallini1-Jan-07 10:39
mveCPallini1-Jan-07 10:39 
AnswerRe: preassure meter Pin
Shouvik Das1-Jan-07 17:12
Shouvik Das1-Jan-07 17:12 
Questionprefix vs postfix Pin
swjam1-Jan-07 2:45
swjam1-Jan-07 2:45 
AnswerRe: prefix vs postfix Pin
Nemanja Trifunovic1-Jan-07 5:22
Nemanja Trifunovic1-Jan-07 5:22 
QuestionIOCP And WSANOBUFS Error Pin
Polity4h1-Jan-07 2:32
Polity4h1-Jan-07 2:32 
QuestionRe: IOCP And WSANOBUFS Error Pin
Mark Salsbery1-Jan-07 8:52
Mark Salsbery1-Jan-07 8:52 
AnswerRe: IOCP And WSANOBUFS Error Pin
Polity4h1-Jan-07 11:01
Polity4h1-Jan-07 11:01 
GeneralRe: IOCP And WSANOBUFS Error Pin
Mark Salsbery1-Jan-07 15:14
Mark Salsbery1-Jan-07 15:14 
GeneralRe: IOCP And WSANOBUFS Error Pin
Polity4h2-Jan-07 0:27
Polity4h2-Jan-07 0:27 
GeneralRe: IOCP And WSANOBUFS Error Pin
Polity4h2-Jan-07 6:25
Polity4h2-Jan-07 6:25 
GeneralRe: IOCP And WSANOBUFS Error Pin
Mark Salsbery2-Jan-07 7:07
Mark Salsbery2-Jan-07 7:07 
GeneralRe: IOCP And WSANOBUFS Error Pin
Polity4h2-Jan-07 7:17
Polity4h2-Jan-07 7:17 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.