0

我正在用一个类 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;
}

主程序

#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());

}

生成文件

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 回答