Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sol

[Resolvido] Codeblocks e VS Code Não Reconhece Classe

Recommended Posts

Sol

Ola Malta! Sou nova na programação em POO e estou com um problema ha dias e não consigo resolver. Tenho um projecto da faculdade em POO e tanto o Codeblocks quanto o VS Code não reconhecem a classe que criei. Testei programas feitos pelo professor  e também ocorre o mesmo erro. Será que alguém poderia ajudar-me sff? 

//DEFINIÇÃO MAIN()

#include "M.h"
#include "M.cpp"
#include<stdio.h>


int main()
{

    int n,m,k,p;
    Matriz mat_a,mat_b,mat_c;


    printf("Introduza as dimensoes da matriz A",n,m);
    scanf("%d %d",&n,&m);
    printf("Introduza as dimensoes da matriz B",k,p);
    scanf("%d %d",&k,&p);

    //construção de objetos do tipo Matriz

    m_a=Matriz(n,m);
    m_b=Matriz(k,p);
    m_a.Leitura();
    m_a.Leitura();
    m_c=m_a;


    //possibilidade de somar

    if(mat_a.PodeSomar(&mat_b))
    {
        mat_a += mat_b;
        printf("A matriz da soma [A] + [B] = \n");
        mat_a.Escrita();
    }
    else
        printf("Não é possível somar essas duas matrizes");

    //possibilidade de multiplicar

    if(mat_c.PodeMultiplicar(&mat_b))
    {
        mat_c *= mat_b;
        printf("O produto de  [A] * [B] = \n");
        mat_c.Escrita();
    }
    else
        printf("Não é possível multiplicar essas duas matrizes");

}

/**************************************************************************************************************************/

//DEFINIÇÃO DO FICHEIRO DA CLASSE.cpp

#pragma once
#include "M.h"
#include <stdio.h>
#define M_H_INCLUDED
#ifndef M_H


Matriz :: Matriz(int nLinhas, int nColunas)
{
    Iniciar(nLinhas,nColunas);

}
Matriz::Matriz()
{
    Iniciar(0,0);
}

Matriz::~Matriz()
{
    Apagar();
}

#endif
  
  /**************************************************************************************************************************/
  
//DEFINIÇÃO CLASSE MATRIZ COM AS OPERAÇÕES EM M_A E M_B  
  
#pragma once
#include "M.cpp"
#include "M.h"
#define M_H_INCLUDED
#ifndef M_H


class Matriz{
private:
    int **matriz;
    int linhas;
    int colunas;

    void Apagar();
    void Iniciar(int nLinhas, int nColunas);

public:
    Matriz();
    Matriz(int nLinhas,int NColunas);
    ~Matriz();

    bool PodeMultiplicar(const Matriz*pm);
    bool PodeSomar(const Matriz*pm);

    const Matriz& operator =(const Matriz& m1);
    const Matriz& operator +=(const Matriz& m1);
    const Matriz& operator *=(const Matriz& m1);

    void Leitura();
    void Escrita();
};


#endif

O erro que ocorre é como se a Classe Matriz não representasse um tipo. Como se não tivesse definida então não há reconhecimento dos objectos criados. Tentei outros fóruns e um colega indicou-me este. Caso alguém possa ajudar-me agradeço imensamente.

Edited by Sol
Obs: O erro ocorre nas linha correspondentes aos construtores do ficheiro M.cpp. No codeblocks " Matriz does not a type" e no VS uma outra msg com o mesmo significado.

Share this post


Link to post
Share on other sites
HappyHippyHippo

esses includes estão muito manhosos ...

- o M.cpp deverá incluir somente o M.h

- o M.h não deve incluir nada

- o main.cpp deve incluir somente o M.h

depois disso o que dá ?

  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Sol
Em 31/03/2019 às 12:18, HappyHippyHippo disse:

esses includes estão muito manhosos ...

- o M.cpp deverá incluir somente o M.h

- o M.h não deve incluir nada

- o main.cpp deve incluir somente o M.h

depois disso o que dá ?

Sim na verdade estavam errados mesmo. Fiz modificações no codigo e agora estou com alguns problemas diferentes. Obrigada

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.