1> ------ Build build:Project:Seminarski,配置:Debug Win32 ------
1> MSVCRTD.lib(crtexe.obj):错误LNK2019:函数___ tmainCRTStartup中引用了未解析的外部符号_main
1> C:\ Users--:致命错误LNK1120:1个未解析的外部
==========构建:0成功,1失败,0最新,0跳过==========
这些是错误,我尝试了很多这里提供的解决方案,大多数是改变链接器子系统和应用程序类型,这些都是在开始时正确设置的。
#include <iostream>
#include <string>
using namespace std;
template<class T>
class Skup
{
private:
int n, kap;
T *p;
public:
explicit Skup(int N) : kap(N), n(0), p(new T[kap]){}
Skup(const Skup &x);
~Skup(){ delete[] p; }
Skup &operator = (const Skup &x);
bool provjera(const T &clan);
void SetClan(int clan);
T Getn();
void sortiranje();
friend ostream& operator << (ostream& izlaz, Skup x);
};
template<class T>
Skup<T>::Skup(const Skup &x)
{
n = x.n;
p = new T[n];
for (int i = 0; i < n; i++)
p[i] = x.p[i];
}
template<class T>
Skup<T> &Skup<T>::operator = (const Skup &x)
{
if (this != &x){
delete[] p;
n = x.n;
p = new T[n];
for (int i = 0; i < n; i++)
p[i] = x.p[i];
}
return *this;
}
template<class T>
bool Skup<T>::provjera(const T &clan)
{
for (int i = 0; i < n; i++)
{
if (p[i] == clan)
return true;
}
return false;
}
template<class T>
void Skup<T>::SetClan(int clan)
{
if (n == kap)
throw "Kapacitet popunjen!";
if (!provjera(clan))
p[n++] = clan;
}
template<class T>
T Skup<T>::Getn()
{
return n;
}
template<class T>
void Skup<T>::sortiranje()
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n - 1; j++)
{
if (p[i]<p[j])
{
T tmp = p[i];
p[i] = p[j];
p[j] = tmp;
}
}
}
}
template<class T>
ostream& operator << (ostream& izlaz, Skup<T> x)
{
izlaz << "{";
for (int i = 0; i < x.n-1; i++)
{
izlaz << x.p[i];
izlaz << ", ";
}
izlaz << x.p[x.n-1] << "}" << endl;
return izlaz;
};
template < class T >
int main()
{
int kapa;
cout << "Kapacitet:";
cin >> kapa;
Skup<T> jedan(kapa);
try{
int BrEl; // za iznimku, unijeti BrEl > kapa
cout << "Broj elemenata:";
cin >> BrEl;
for (int i = 0; i < BrEl; i++)
{
int *cl = new int;
cout << "Dodaj clana:";
cin >> *cl;
if (jedan.provjera(*cl))
{
i--;
cout << "Element vec postoji!" << endl;
}
else
jedan.SetClan(*cl);
delete cl;
}
}
catch(const char* iznimka){
cout << endl << iznimka << endl;
}
jedan.sortiranje();
cout << jedan;
system("pause");
return 0;
}
很抱歉对克罗地亚语发表评论,我相信你可以在没有这个问题的情况下找出解决办法:)
答案 0 :(得分:1)
不要将main声明为函数模板。
相反,请给Skud一个合适的类型。