Ir ao conteúdo
  • Cadastre-se

Não consigo compilar linguagem C++ e nem orientada a objetos em DEV-C++


leonardoadoado

Posts recomendados

Não consigo compilar esse código no DEV-C++.

Mesmo incluindo a bibliotece iostream no include do DEV, não compila.

O que poderia ser. Obrigado e aguardo.


#include <iostream.h>
main (void)
{

int i;
char str[80];

cout << "C++ é fácil\n";
printf ("Você pode usar printf() se preferir");
//para ler um número use
cout << "Informe um número: ";
cin >> i;
//para exibir um número use
cout << "O seu número é: " << i << "\n";
//para ler uma string use
cout << "Informe uma string: ";
cin >> str;
//para imprimir uma string use
cout << str;

return (0);
}

Link para o comentário
Compartilhar em outros sites

Olá leonardoadoado.

Eu não tenho muito experiência em C++, mas vou tentar ajudar...

Então, ao compilar, observei o seguinte erro:

Dev-C++ 4.9.9.2]Warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.

Que está mais ou menos dizendo que não se usa mais o #include desta forma... ou seja, algo como não tendo mais esse ".h". Ficando assim:

#include <iostream>

Mas também será necessário usar o namespace std. O motivo??

Achei essa aqui:

Isso é necessário para que você possa usar o ambiente de nomes (namespace) "std", onde "cout" está definido. Os ambientes de nomes são usados para evitar conflitos de escopo, ou seja, quando o escopo de uma variável "penetra" no escopo de outra variável com o mesmo nome da primeira.

Fonte

RESUMIDAMENTE

Remova o seu include, e substitua por esse código:

#include <iostream>
using namespace std;

No aguardo.

Abraços

Link para o comentário
Compartilhar em outros sites

Por que será que na apostila que estou estudando mandou usar #include <iostream.h>??

Entendo que simplesmente é uma questão de "defasagem", ou seja, passou a existir uma nova forma de fazer a mesma coisa, daí o compilador não aceita mais a antiga...

Tipo, em compiladores mais velhos, iria funcionar. (vide qual versão é usada na apostila)

Abraços

Link para o comentário
Compartilhar em outros sites

Está certo. Na mensagem de erro, aparece isso mesmo.

#warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.

Se eu tivesse lido isso melhor, teria resolvido antes. valeu.

Eu estou com outro problema. Estou tentanto compilar esse código, e tá dando erro no linker.

[Linker error] undefined reference to `WinMain@16'

Como eu poderia resolver isso?


#include <iostream>
//isto cria a classe fila
class fila{
int q[100];
int sloc, rloc;
public:
void init(void);
void qput(int i);
int qget(void);
};

valeu e aguardo.

Link para o comentário
Compartilhar em outros sites

beleza, o código anterior compilou.

E nesse outro código, o que está errado?


#include <iostream>
main()
{
class fila{
int q[100];
int sloc, rloc;
public:
void init(void);
void qput(int i);
int qget(void);
};

void fila::init(void){
rloc = sloc = 0;
}
void fila::qput(int i){
if (sloc == 100){
cout << "A fila está cheia";
return;
}
sloc++;
q[sloc] = i;
}
int fila::qget(void){
if (rloc == sloc){
cout << "A fila está vazia";
return (0);
}
rloc++;
return (q[rloc]);
}
main(void){
fila a, b; //cria dois objetos fila
a.init();
b.init();
a.qput(10);
b.qput(19);
a.qput(20);
b.qput(1);
cout << a.qget() << " ";
cout << a.qget() << " ";
cout << b.qget() << " ";
cout << b.qget() << " ";

return (0);
}
}

Link para o comentário
Compartilhar em outros sites

Olá,

Percebi 2 erros.

Primeiro, para usar as de entrada e saída padrões do C++ é necessário utilizar o comando:

using namespace std;

Que foi inserido depois da biblioteca.

Segundo, você declarou duas funções main, removi a primeira e deixei só a classe juntamente com seus métodos, segue o código:



using namespace std;
class fila{
int q[100];
int sloc, rloc;
public:
void init(void);
void qput(int i);
int qget(void);
};

void fila::init(void){
rloc = sloc = 0;
}
void fila::qput(int i){
if (sloc == 100){
cout << "A fila está cheia";
return;
}
sloc++;
q[sloc] = i;
}
int fila::qget(void){
if (rloc == sloc){
cout << "A fila está vazia";
return (0);
}
rloc++;
return (q[rloc]);
}
main(void){
fila a, b; //cria dois objetos fila
a.init();
b.init();
a.qput(10);
b.qput(19);
a.qput(20);
b.qput(1);
cout << a.qget() << " ";
cout << a.qget() << " ";
cout << b.qget() << " ";
cout << b.qget() << " ";

return (0);
}

#include <iostream>

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...