Ir para conteúdo
Fórum Script Brasil

fbafelipe

Membros
  • Total de itens

    97
  • Registro em

  • Última visita

Posts postados por fbafelipe

  1. Obrigado pela ajuda.

    Caso alguém tenha o mesmo problema, esse é o código funcionando:

    #include <iostream>
    
    class A{
        public:
            virtual ~A(){}
            
            inline void foo() const{
                std::cout << "Foo\n";
            }
    };
    
    class B : public A{
        public:
            void foo(int x){}
            
            using A::foo;
    };
    
    int main(int argc, char *argv[]){
        B b;
        b.foo();
    }

    Para evitar que o método seja escondido basta adicionar using A::foo;

    Obrigado

  2. Ao tentar compilar este código:

    #include <iostream>
    
    class A{
        public:
            virtual ~A(){}
            
            inline void foo() const{
                std::cout << "Foo\n";
            }
    };
    
    class B : public A{
        public:
            void foo(int x){}
    };
    
    int main(int argc, char *argv[]){
        B b;
        b.foo();
    }

    O g++ retorna o seguinte erro:

    teste.cpp: In function ‘int main(int, char**)’:

    teste.cpp:19: erro: no matching function for call to ‘B::foo()’

    teste.cpp:14: nota: candidates are: void B::foo(int)

    alguém sabe o porque deste erro?

    Obrigado

  3. Oi,

    eu estou usando o dev-cpp, e quando eu vou compilar o codigo, da um "link error" na funcao EnumProcesses() da windows api, eu acho que tenho que incluir alguma lib do dev-cpp, mas não seu qual...

    e como eu faco para ver o nome do processo (o nome que aparece quando da ctrl+alt+del)?

    Obrigado

  4. na verdade, Java é meio interpretado e meio compilado em tempo de execusao...

    antes de comecar a executar o programa, o Java compila parte do codigo para codigo nativo, e o resto é interpretado...

    a vantagem de ser compilado em tempo de execusao é q é possivel otimizar ao maximo para a maquina que esta rodando, já que o binario não sera usado em outras maquinas...

    dessa forma o Java consegue um bom desempenho, proximo de C/C++

  5. eu queria aprender a usar o linker pra poder gerar um unico programa atravez de varios arquivos .c, e tb pra poder misturar linguagens (não tenho certeza, mas acho q da pra fazer isso com o linker)... nesse caso ta com apenas um arquivo .c, mas seu eu tivesse dois arquivos .c (e não .h) e tivesse que juntalos em um só?

  6. Oi,

    eu to tentando aprender a usar o ld, mas não ta funcionando...

    eu fiz esse codigo:

    #include <stdio.h>
    int main(){
     printf("Hello World!\n");
     return 0;
    }
    

    e olha o q acontece:

    felipe@felipe:~/projetos/C$ gcc -c teste.c

    felipe@felipe:~/projetos/C$ ld -o teste teste.o -lc

    ld: warning: cannot find entry symbol _start; defaulting to 00000000080481a4

    felipe@felipe:~/projetos/C$ ls

    teste*  teste.c  teste.o

    felipe@felipe:~/projetos/C$ ./teste

    -sh: ./teste: No such file or directory

    eu coloquei o ls pra mostrar como o executavel esta sendo gerado, mas quando tento executar fala q ele não existe!!!

    alguém sabe onde ta o erro?

    obrigado

  7. sockets em C no linux eu aprendi lendo as paginas do "man" do linux...

    é só digitar "man socket", que vai explicar o que a funcao socket faz (cria um socket), o que é cada argumento, o que retorna etc... e no final aparece "see also", e outras funcoes que são usadas com sockets...

  8. java é case-sensitive, letras mauisculas são diferentes de letras minusculas... se você tiver o arquivo Hello.java, você vai ter que compilar com "javac Hello.java", e pra rodar "java Hello"

    e você não precisa por o arquivo .java na pasta bin do jdk, basta você setar a variavel PATH para incluir a pasta bin do jdk...

  9. ta ai o codigo que to tentando compilar no linux:

    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #define MAX 10
    #define BUFFER 1024
    #define MSG "SUCESSO!\n"
    int main(){
     struct sockaddr_in addr;
     int serverSocket, socket, length, i;
     char buffer[BUFFER];
     serverSocket = socket(AF_INET, SOCK_STREAM, 0);
     if (serverSocket == -1){
      printf("Ocorreu um erro ao abrir serverSocket!\n");
      exit(1);
     }
     addr.sin_family = AF_INET;
     addr.sin_port = htons(12345);
     addr.sin_addr.s_addr = INADDR_ANY;
     memser(&(addr.sin_zero), '\0', 8);
     if (bind(serverSocket, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)) == -1){
      printf("Ocorreu um erro ao chamar bind()!\n");
      exit(1);
     }
     if (listen(serverSocket, MAX) == -1){
      printf("Ocorreu um erro ao chamar listen()!\n");
      exit(1);
     }
     printf("Aguardando conexao...\n");
     socket = accept(serverSocket, NULL, NULL);
     if (socket == -1){
      printf("Ocorreu um erro ao chamar accept()!\n");
      exit(1);
     }
     printf("Conectado!\n");
     printf("Recebendo dados...\n");
     length = recv(socket, (void *)buffer, BUFFER, MSG_WAITALL);
     printf("%d bytes foram recebidos:\n");
     for (i = 0; i < BUFFER; i++) printf("%c", buffer[i]);
     printf("\n\n");
     printf("Enviando resposta...\n");
     sprintf(buffer, MSG);
     length = send(socket, buffer, strlen(buffer), MSG_OOB);
     printf("%d bytes foram enviados.\n", length);
     printf("Sucesso!");
     close(socket);
     close(serverSocket);
     return 0;
    }
    
    e o erro:
    felipe@felipe:~/projetos/teste/C$ gcc teste.c -o teste
    teste.c: In function `main':
    teste.c:12: error: called object is not a function
    

  10. o header winsock2.h já estava sendo incluido, eu tb adicionei a libws2_32.a, e iniciei o WSAData, e continua dando o mesmo erro...

    ai vai o codigo completo:

    #include <stdio.h>
    #include <windows.h>
    #include <winsock2.h>
    #include <wininet.h>
    #define BUFFER 1024
    #define MSG "SUCESSO!"
    int main(){
     SOCKET serverSocket, socket;
     char buffer[BUFFER];
     struct sockaddr_in service;
     int lido, enviado, i;
     WSADATA wsaData;
     if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0){
      printf("WSAStartup failed.\n");
      exit(1);
     } 
     serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
     if (serverSocket == INVALID_SOCKET){
      printf("Ocorreu um erro!\n");
      getch();
      exit(1);
     }
     service.sin_family = AF_INET;
     service.sin_addr.s_addr = inet_addr("127.0.0.1");
     service.sin_port = htons(666);
     if (bind(serverSocket, (SOCKADDR*)&service, sizeof(service)) == SOCKET_ERROR){
      printf("erro no bind()\n");
      closesocket(serverSocket);
      getch();
      exit(1);
     }
     if (listen(serverSocket, 1) == SOCKET_ERROR){
      printf("Erro escutando socket\n");
      closesocket(serverSocket);
      getch();
      exit(1);
     }
     socket = accept(serverSocket, NULL, NULL);
     if (socket == INVALID_SOCKET){
      printf("Erro no socket\n");
      closesocket(socket);
      closesocket(serverSocket);
      getch();
      exit(1);
     }
     lido = recv(socket, buffer, BUFFER, 0);
     if (lido == SOCKET_ERROR){
      printf("Erro ao receber dados\n");
      closesocket(socket);
      closesocket(serverSocket);
      getch();
      exit(1);
     }
     printf("%d bytes recebidos\nData:\n", lido);
     for (i = 0; i < lido; i++) printf("%c", buffer[i]);
     printf("\n\n");
     enviado = send(socket, MSG, strlen(MSG), 0);
     printf("Dados enviados com sucesso!\n");
     closesocket(socket);
     closesocket(serverSocket);
     getch();
     return 0;
    }
    

    eu tb to aprendendo sockets no linux, e ironicamente, to tento o mesmo problema, com a mesma funcao! depois eu posto aqui o codigo que to tentando compilar no linux...

  11. tenta no site da msdn: msdn

    eu to (tentando) aprender a usar sockets no ruwindows, depois vou estudar os sockets no linux, valeu o link...

    mas tipo, eu dei uma olhada no msdn, tb to procurando um monte de coisa no google, já consegui escrever um codigo que deveria funcionar, mas essa linha se recusa a compilar:

    serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    

    da esse erro: "'socket' cannot be used as function"

    eu to usando o dev-cpp

  12. Oi,

    eu to usando a funcao fork() (do header unistd.h)...

    como que eu faco pra ter uma variavel que seja vista pelos dois processos?

    e porque nesse teste que fiz usando vfork(), não passa do "Thread NOVA: Aguardando pid...":

    #include <stdio.h>
    #include <unistd.h>
    int thread = 0;
    int main(){
     int pid;
     printf("Iniciando teste...\n");
     printf("THREAD = %d\n", thread);
     printf("Chamando vfork()\n");
     pid = vfork();
     if (pid){
      thread = pid;
      printf("Thread MAIN: PID = %d\n", pid);
      printf("Thread MAIN: Chamando sleep(10)\n");
      sleep(10);
      printf("Thread MAIN: sleep completo\n");
      printf("Thread MAIN: THREAD = %d\n", thread);
      printf("Thread MAIN: finalizando...\n");
      return 0;
     }
     else{
      printf("Thread NOVA: Aguardando pid...\n");
      while (!thread) sleep(1);
      printf("Thread %d: Chamando sleep(3)\n", thread);
      sleep(3);
      printf("Thread %d: finalizando...\n", thread);
      exit(0);
     }
    }
    

    vlw

  13. Lembrando que versões de linux servidor já está sendo cobrada.

    Daqui a pouco já vai começar a aparecer versões com o código fechado senão já apareceu ainda.

    não, não vai aparecer com codigo fechado, porque segunda a lisenca GPL um prog q tem codigo aberto não pode ter seu codigo fechado futuramente...

    o freesoftware é free de liberdade, o usuario pode modificar e redistribuir o programa sob os termos da licença, na propria licença diz q a questao é liberdade, e não preço, não a nada de errado eles cobrarem... e como é software livre, mesmo sendo cobrado, se você for comprar um cd pirata, não vai ser ilegal, afinal o cara q ta vendendo tem o direito de redistribuir, basta ele seguir a licença, o q implica em mandar os sources e uma copia da licença...

    duvido muito q o linux venha a se tornar como o ruwindows, se isso vier a acontecer, a comunidade pode pegar os sources e criar um novo projeto baseado no linux... mas duvido q isso seja necessario...

  14. deem uma olhada nesse link: http://www.theinquirer.net/?article=18910

    fica complicado acreditar em um dado fornecido pela microsoft...

    e quanto ao ruwindows, ele trava sim, é obvio q tem gente q exagera um pouco, mas ele trava bastante sim...

    quanto aos virus, isso depende muito, depende das paginas q você entra, se você tem anti-virus atualizado, etc...

    e mesmo com antivirus atualizado você sempre corre o risco de encontrar um virus novo, ou q o seu antivirus ainda não reconhece... e se você n tem antivirus, dai já era, vai lotar de virus...

    no linux, eu não tenho nenhum antivirus e nunca peguei nenhum virus... uso linux a pouco mais de 1 ano e meio e NUNCA travou...

    já no ruwindows, mesmo com antivirus atualizado sempre tem um ou outro q infecta o pc, e de vez enquanto da uma travada...

    e tipo, eu acho q o SO que tem q trazer seguranca, não o antivirus, pelo menos pra usuarios domesticos, não deveria ser necessario antivirus... a m$ deveria se empenhar mais em corrigir as falhas...

  15. só uma coisa... na primeira solucao você tem q verificar se o usurio não esta digitando mais de 19 caracteres... se pode dar estouro de buffer...

    e mais uma solucao, só q sem precisar criar um novo array...

    char str[100];
    int i = 0, espacos = 0;
    // le a string
    while (str[i]){ // OBS: não precisa por o != '\0' porque o '\0' já é zero
     if (str[i] == ' '){
      espacos++;
      continue;
     }
     str[i - espacos] = str[i];
     i++;
    }
    str[i - espacos] = str[i]; // copia o '/0'
    

×
×
  • Criar Novo...