» »

[C++] Linker error

[C++] Linker error

Loaded ::

Lp

Torej imam error ki mi para živce..imam tri datoteke(definicijo, implementacijo ter glavni program)...zgleda da ne najde implementacije.
V Dev-C++ mi javi linker error na konstruktor, ker ga rabim ko ustvarjam objekt...v Visul studio mi javi

1>------ Build started: Project: seznam, Configuration: Debug Win32 ------
1>Linking...
1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall seznam<int>::~seznam<int>(void)" (??1?$seznam@H@@QAE@XZ) referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall seznam<int>::seznam<int>(void)" (??0?$seznam@H@@QAE@XZ) referenced in function _main
1>D:\programiranje\Podatkovne strukture\Naloga01\seznam\Debug\seznam.exe : fatal error LNK1120: 2 unresolved externals
1>Build log was saved at "file://d:\programiranje\Podatkovne strukture\Naloga01\seznam\seznam\Debug\BuildLog.htm"
1>seznam - 3 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Tu so datoteke....ne vem kaj naj ...

#ifndef _SEZNAM_H_
#define _SEZNAM_H_

template <class T>
class seznam {
protected:
    struct element{
        int vrednost;
        element* k_nasl;
    };
    
    element* k_zacetek;
    int velikost_seznama;
    
public:
	seznam();
	seznam(const seznam& s);
	~seznam();

	void vstavi(int indeks, const T& vred);
	void vrini(int indeks, const T& vred);
	void brisi(int indeks);
	T vrni(int indeks) const;
	int isci(const T& vred) const;
	bool prazen() const;
	int velikost() const;
};

#endif
--------------------------------------------------------------------------------------------
#include <iostream>
#include "seznam.h"
using namespace std;

template <class T>
seznam<T>::seznam() {
    k_zacetek = NULL;
    velikost_seznama = 0;
}

template <class T>
seznam<T>::seznam(const seznam& s) {
    
}

template <class T>
seznam<T>::~seznam() {
}

template <class T>
void seznam<T>::vstavi(int indeks, const T& vred) {
}

template <class T>
void seznam<T>::vrini(int indeks, const T& vred) {
}

template <class T>
void seznam<T>::brisi(int indeks) {
}

template <class T>
T seznam<T>::vrni(int indeks) const {
}

template <class T>
int seznam<T>::isci(const T& vred) const {
}

template <class T>
bool seznam<T>::prazen() const {
}

template <class T>
int seznam<T>::velikost() const {
}
-----------------------------------------------------------
#include <iostream>
#include "seznam.h"
using namespace std;

int main() {
  
  seznam <int> mojSeznam;
  
  char izbira;
  do {
    cout << "1 -izhod" << endl;
    cin >> izbira;
    
  } while(izbira != '1');
 
  system("pause");	
  return 0;
}


Obilo zabave...:D
Loadeed

rasta ::

Pri šablonah - template mora biti na voljo tako definicija kot implementacija. Oz. implementacije metod template razredov ne moraš linkati, ker jih za vsak primer prevajalnik šele ustvari.

Kot vidim imaš ti implementacije v ločeni datoteki.

Loaded ::

Hvala.....še eno bolj noob vprašanje imam.....
Če napišem :

while (k_zacetek->k_naslednji != NULL) ali 
for (element* k = k_zacetek; k != NULL; k = k->k_naslednji)


to ni isto? Po moji logiki bi naj bilo.....
k_zacetek je kazalec na zacetek seznama...k_naslednji je kazalec na naslednji element (struktura)..

Lp
Loadeed

Zgodovina sprememb…

  • spremenil: Loaded ()

BigWhale ::

Razlika je v tem, da moras v while zanki sam poskrbet za 'povecevanje stevca'. Karkoli ze to je.

While zanke so bolj uporabne, ce se ti stevec ne povecuje/zmanjsuje vedno po istem koraku.

for (i = 0; i < 100; i++)
{
  ... ...
  ... ...
  i++;
  ... ...
  ... ...
}


Tole ni najbolj pametno. :)

Loaded ::

Zakaj mi stavek

int i;
while(k_zacetek->k_nasl != NULL)
i++;



ne dela?
Rad bi šel skozi seznam in preštel koliko je elementov noter..

Lp
Loadeed

Quikee ::

element* k = k_zacetek;
int i;
while(k != NULL) {
k = k->k_nasl;
i++;
}


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

arrayList, razred chain

Oddelek: Programiranje
51026 (950) ERGY
»

[c++]Seznam

Oddelek: Programiranje
142581 (2581) Gundolf
»

[C++ naloga] seznam

Oddelek: Programiranje
81332 (1332) BigWhale
»

pomoc pri skladu

Oddelek: Programiranje
51246 (1171) NoUse4AName
»

[C++] NULL: Undeclared identifier - HELP!

Oddelek: Programiranje
101156 (1094) CCfly

Več podobnih tem