链接错误LNK1120和LNK2019 - “未解析的外部符号_main”

时间:2015-06-05 16:43:23

标签: c++ linker-errors lnk2019

  

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;
}

很抱歉对克罗地亚语发表评论,我相信你可以在没有这个问题的情况下找出解决办法:)

1 个答案:

答案 0 :(得分:1)

不要将main声明为函数模板。

相反,请给Skud一个合适的类型。