C++ Erreur: undefined reference to `main'
Je suis en train de travailler sur une simple Liste de classe, mais lors de la compilation de l'en-tête et du rpc fichier, j'obtiens l'erreur: undefined reference to `main'
Ce que je fais mal, et comment pourrais-je résoudre ce problème?
Voici la liste.h fichier des en-têtes simples:
liste.h
#ifndef LIST_H
#define LIST_H
#include <string>
const int DEFAULT_CAPACITY = 100;
class List
{
public:
List();
List(int capacity);
~List();
void push_back(std::string s);
int size() const;
std::string at(int index) const;
private:
std::string* mData;
int mSize;
int mCapacity;
};
#endif
Et voici le list.cpp fichier:
list.cpp
#include "list.h"
#include <string>
List::List(){
mData = new std::string[DEFAULT_CAPACITY];
mSize = 0;
mCapacity = 100;
};
List::List(int capacity){
mData = new std::string[capacity];
mSize = 0;
mCapacity = capacity;
};
List::~List(){
delete[] mData;
};
void List::push_back(std::string s){
if (mSize<mCapacity){
mData[mSize] = s;
mSize++;
}
};
int List::size() const{
return mSize;
};
std::string List::at(int index) const{
return mData[index];
};
J'ai essayé d'expérimenter autour des "using namespace std" et comment , mais je ne peux pas comprendre comment obtenir ces erreurs disparaissent. Quelle en est la cause?
Où est la fonction principale?
Vous avez besoin d'un
À moins que votre programme n'est pas un exécutable, le
Merci beaucoup! J'ai totalement oublié et savais qu'il me manquait quelque chose.
Vous avez besoin d'un
int main()
fonction.À moins que votre programme n'est pas un exécutable, le
main
fonction est obligatoire. Vous devez créer la main
fonction pour construire l'application.Merci beaucoup! J'ai totalement oublié et savais qu'il me manquait quelque chose.
OriginalL'auteur smileham | 2013-01-31
Vous devez vous connecter pour publier un commentaire.
Undefined reference to main() signifie que votre programme manque une fonction main (), qui est obligatoire pour tous les programmes C++. Ajouter ceci quelque part:
OriginalL'auteur Lundin
Vous devriez être en mesure de compiler
list.cpp
, vous ne pouvez pas lien à moins d'avoir un programme principal. (Cela peut être une légère simplification excessive.)La façon de compiler un fichier source, sans établir de lien dépend du compilateur que vous utilisez. Si vous utilisez
g++
, la commande serait:Qui permettra de générer un fichier de l'objet contenant le code de l'ordinateur de votre classe. En fonction de votre compilateur et de l'OS, il pourrait être appelé
list.o
oulist.obj
.Si vous essayez à la place:
il va penser que vous avez défini une
main
fonction et essayez de générer un exécutable, ce qui entraîne l'erreur que vous avez vu (parce que vous n'ai pas défini unmain
fonction).À un certain point, bien sûr, vous aurez besoin d'un programme qui utilise votre classe. Pour ce faire, vous aurez besoin d'un autre
.cpp
fichier source qui a un#include "list.h"
et unmain()
fonction. Vous pouvez compiler le fichier source et le lien de l'objet avec l'objet généré à partir delist.cpp
pour générer un travail exécutable. Avecg++
, vous pouvez le faire en une seule étape, par exemple:Vous devez avoir un
main
fonction quelque part. Il n'a pas nécessairement à être enlist.cpp
. Et comme une question de style et d'organisation du code, il ne devrait probablement pas être enlist.cpp
; vous pourriez être en mesure de l'utilisation de cette classe de plus d'un programme principal.OriginalL'auteur Keith Thompson