0

1つのクラスmain.cでプロジェクトを実行し、makefileを使用してコンパイルします

Estado.h

#ifndef ESTADO_H
#define ESTADO_H
using namespace std;
#include <string>
class Estado
{
    private:
        int ident;
        bool estInit;
    bool estEnd;

    public: 
    Estado();
        virtual ~Estado();
        Estado(int ident,bool inits,bool ends);
        void setIdent(int id);
        void setInitS(bool inits);
    void setEndS(bool ends);
        int getIdent();
    bool getInitS();
    bool getEndS();
};
#endif // TRANS_H

Estado.c

#include "Estado.h"


Estado::Estado(int ident,bool inits,bool ends)
{
    this->ident=ident;
    this->estInit=inits;
    this->estEnd=ends;
}


void Estado::setIdent(int id){
    ident=id;
}
void Estado::setInitS(bool inits){
    estInit=inits;
}
void Estado::setEndS(bool ends){
    estEnd=ends;
}
int Estado::getIdent(){
    return ident;
}
bool Estado::getInitS(){
    return estInit;
}
bool Estado::getEndS(){
    return estEnd;
}

Main.c

#include <iostream>
#include <vector>
#include"Trans.h"
#include"Estado.h"

using namespace std;

int menu();
void cargarAutomata(int numEstados,int numTrans);
int main()
{
    int numEstados,numTrans,opc;
    cout<<"\t\t**************************************\t\t"<<endl;
    cout<<"\t\t*INGRESO DE PARAMAETROS PARA LA TABLA*\t\t"<<endl;
    cout<<"\t\t**************************************\t\t"<<endl;
    cout<<"Indica la cantidad de estados"<<endl;
    cin>>numEstados;
    cout<<"Indica la cantidad de transiciones"<<endl;
    cin>>numTrans;

    cargarAutomata(numEstados,numTrans);

    return 0;
}


void cargarAutomata(int numEstados,int numTrans){
    vector<Estado> *states(numEstados,Estado());

}

Makefile

CC=g++ -c 
LN=g++

Practica1:  Estado.o Trans.o
    $(LN) Estado.o Trans.o -o Practica1 

transicion.o: Trans.c 
    $(CC) Trans.c Trans.o

est.o: Estado.c 
    $(CC) Estado.c Estado.o

次のエラーが発生しました

g ++ -o Practica1 Estado.o Trans.o
/usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crt1.o:関数_start': (.text+0x18): undefined reference tomain'collect2 :ldが1つの終了ステータスを返しましたmake:* [Practica1]エラー1

4

2 に答える 2

0

デストラクタを実装したことはありません。これをEstado.cファイルに追加します。

Estado::~Estado {
    ...
};
于 2013-02-18T02:38:50.327 に答える
0

makefileのエラーのようです。次のmakescriptを試してください。

CC=g++ -c 
LN=g++

Practica1:  Estado.o Trans.o main.o
    $(LN) Estado.o Trans.o main.o -o Practica1 

transicion.o: Trans.c 
    $(CC) Trans.c -o Trans.o

est.o: Estado.c 
    $(CC) Estado.c -o Estado.o

main.o: main.c
    $(CC) main.c -o main.o
于 2013-02-18T02:38:57.200 に答える