1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Muitas Dùvidas

Discussão em 'Programação' iniciada por ninita, 27 de Setembro de 2007. (Respostas: 4; Visualizações: 600)

  1. ninita

    ninita Power Member

    Boas noites

    Estou com alguns problemas ao fazer um trabalho em C++.
    Neste momento tenho erros de linkagem que não sei como me livro deles.
    Depois tenho duvidas em alguns codigos.
    void menuClientes()
    {
    int opcao;

    do
    {
    cout << "1. Inserir Cliente" << endl;
    cout << "2. Alterar Cliente" << endl;
    cout << "3. Eliminar Cliente" << endl;
    cout << "4. Sair" << endl;
    cin >> opcao;
    }
    while (opcao<1 || opcao>4);

    switch (opcao)
    {
    case 1: insereCliente();
    break;
    case 2: submenu_alteraCliente();
    break;
    case 3:submenu_eliminaCliente();
    break;
    case 4:
    break;
    }
    }


    void submenu_alteraCliente()
    {
    string nome;
    int i, flag=0;

    do
    {
    cout << "Qual o Cliente que deseja alterar?" << endl;
    cin >> nome;
    for (i=0; i<clientes.size(); i++)
    {
    if (strcmp(clientes.cl_nome, nome) == 0)
    {
    alteraCliente();
    }
    else
    break;
    }

    }
    while (flag=0);
    }

    void submenu_eliminaCliente()
    {
    int opcao;

    do
    {
    cout << "1. Eliminar por Nome" << endl;
    cout << "2. Eliminar por Numero" << endl;
    cout << "3. Sair" << endl;
    cin >> opcao;

    }
    while(opcao<1 || opcao>2);

    switch (opcao)
    {
    case 1: eliminaNome();
    break;
    case 2: eliminaNumero();
    break;
    case 3:
    break;
    }

    }

    void eliminaNome()
    {
    string nome;
    int i, flag=0;

    do
    {
    cout << "Qual o nome do Cliente que deseja apagar?" << endl;
    cin >> nome;
    for (i=0; i<clientes.size(); i++)
    {
    if (strcmp(clientes.cl_nome, nome) == 0)
    {
    eliminaCliente();
    }
    else
    break;
    }

    }
    while (flag=0);
    }

    void eliminaNumero()
    {
    string numero;
    int i, flag=0;

    do
    {
    cout << "Qual o numero do Cliente que deseja apagar?" << endl;
    cin >> numero;
    for (i=0; i<clientes.size(); i++)
    {
    if (strcmp(clientes.id_cliente, numero) == 0)
    eliminaCliente();
    else
    break;
    }

    }
    while (flag=0);
    }

    Acham que este código está correcto? Eu acho que os strcmp estão mal uma vez que me dão o seguinte erro: error C2664: 'strcmp' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const c.

    Obrigado
     
  2. Ace-_Ventura

    Ace-_Ventura Power Member

    pelo que li do código tás a usar um tipo básico, neste caso o string. Sendo um tipo básico não precisa do strcmp, basta fazeres como fazes com 1 inteiro (==, <, >, etc).

    ex:
    if (strcmp(clientes.cl_nome, nome) == 0) fica if (clientes.cl_nome == nome)
     
  3. ninita

    ninita Power Member

    Obrigado pela ajuda. Já não dá erros. Agora tenho é erros de linkagem:
    Main.obj : error LNK2001: unresolved external symbol "void __cdecl menuProdutos(void)" (?menuProdutos@@YAXXZ)
    Main.obj : error LNK2001: unresolved external symbol "void __cdecl menuUtilizadores(void)" (?menuUtilizadores@@YAXXZ)
    Main.obj : error LNK2001: unresolved external symbol "void __cdecl insereCliente(void)" (?insereCliente@@YAXXZ)
    Main.obj : error LNK2001: unresolved external symbol "void __cdecl alteraCliente(void)" (?alteraCliente@@YAXXZ)
    Main.obj : error LNK2001: unresolved external symbol "void __cdecl eliminaCliente(void)" (?eliminaCliente@@YAXXZ)
    Main.obj : error LNK2001: unresolved external symbol "public: __thiscall Clientes::~Clientes(void)" (??1Clientes@@[email protected])
    Main.obj : error LNK2001: unresolved external symbol "public: __thiscall Produtos::~Produtos(void)" (??1Produtos@@[email protected])
    Main.obj : error LNK2001: unresolved external symbol "public: __thiscall Utilizadores::~Utilizadores(void)" (??1Utilizadores@@[email protected])
    Main.o

    Como me vejo livre disto?
    Obrigado
     
  4. Nastase

    Nastase Power Member

    Já não mexo em C++ há algum tempo mas uma coisa que notei foi que nao tens nenhuma função main. Se bem me recordo tens que ter uma função public static int main (...) [Não me lembro dos parâmetros] para que o programa saiba por onde começar a execução do código...

    Vejo também que não usas classes mas acho (corrijam-me se estiver enganado) não é obrigatório no C++ pelo que não acho que venha daí o teu problema.

    Ah! A ordem com que declaras as funções é importante. Não podes chamar uma função que ainda não tenhas declarado. Por exemplo se na função xpto chamas a zxcv() essa última tem que estar declarada e/ou definida ANTES da xpto... Talvez seja mm este o teu problema ;)
     
  5. ninita

    ninita Power Member

    Boas

    Eu tenho um menu main, só não pus foi aqui o codigo todo. Tanto o main como as classes estao bem (pelo menos acho eu). A ordem das funções também estão correctas porém, continuo sempre com estes erros de linkagem. Já não sei que mais hei-de fazer...
    Ajudem-me por favor
     

Partilhar esta Página