Błąd przy kompilacji.

2015-11-01 15:28
amadeusz1
0

Mam następujący kod:

main.cpp

#include <iostream>
#include <ctime>
#include "macierz.h"
#include "wektor.h"

int main(){
    using namespace std;

    //tablice, które zostaną wykorzystane do utworzenia macierzy
    int** macierz1 = new int*[5];
    for (int i = 0; i < 5; i++)
        macierz1[i] = new int[5];

    int** macierz2 = new int*[5];
    for (int i = 0; i < 5; i++)
        macierz2[i] = new int[5];

    //uzupelnienie tablic
    srand(time(NULL));
    for (int i = 0; i < 5; i++){
        for (int j = 0; j < 5; j++){
            macierz1[i][j] = rand() % 10 + 1;
            macierz2[i][j] = rand() % 10 + 1;
        }
    }

    //utworzenie macierzy
    Macierz *macierz1 = new Macierz(5, 5, macierz1);
    Macierz *macierz2 = new Macierz(5, 5, macierz2);

    system("pause");
    return 0;
}

oraz macierz.cpp

#include "macierz.h"
#include <cstring>

//konstruktory
Macierz::Macierz(int i, int j){
    wiersze = i;
    kolumny = j;

    int** macierz = new int*[wiersze];
    for (int it = 0; it < kolumny; it++)
        macierz[it] = new int [kolumny];
}

Macierz::Macierz(int i, int j, int** wartosc){
    wiersze = i;
    kolumny = j;
    wartosci = wartosc;
}

Macierz::Macierz(int i, int j, Macierz &podstawowy){
    wiersze = i;
    kolumny = j;

    int** macierz = new int*[wiersze];
    for (int it = 0; it < kolumny; it++)
        macierz[it] = new int[kolumny];

    memcpy(wartosci, podstawowy.wartosci, sizeof(int) * wiersze * kolumny);
}

//metody dostepowe
int Macierz::dostepWiersze(){
    return wiersze;
}

int Macierz::dostepKolumny(){
    return kolumny;
}

int** Macierz::dostepWartosci(){
    return wartosci;
}

Podczas kompilacji otrzymuję błąd o treści: "differs in levels of indirection from int**", który odnosi się do linijek:

        Macierz *macierz1 = new Macierz(5, 5, macierz1);
    Macierz *macierz2 = new Macierz(5, 5, macierz2);

Próbowałem to naprawić i nie wiem za bardzo jak sobie poradzić z tym problem. Prosiłbym o pomoc.
Przy okazji jak ten kod wygląda od strony jakościowej? Liczę na wskazówki, ponieważ jestem początkującym.

Pozostało 580 znaków

2015-11-01 15:35
0

daj też macierz.h


Pozostało 580 znaków

2015-11-01 15:36
amadeusz1
0
ujemny napisał(a):

daj też macierz.h

macierz.h

#ifndef __MACIERZ_H__
#define __MACIERZ_H__

class Macierz{
public:
    Macierz(int i, int j);
    Macierz(int i, int j, int** wartosc);
    Macierz(int i, int j, Macierz &podstawowy);
    ~Macierz();

    int dostepWiersze();
    int dostepKolumny();
    int** dostepWartosci();

private:
    int wiersze;
    int kolumny;
    int** wartosci;
};

#endif

Pozostało 580 znaków

2015-11-01 15:52
1
int** macierz1
Macierz *macierz1

Pozostało 580 znaków

2015-11-01 16:14
amadeusz1
0
ujemny napisał(a):
int** macierz1
Macierz *macierz1

No i co w związku z tym?

Pozostało 580 znaków

2015-11-01 16:17
0
amadeusz1 napisał(a):
ujemny napisał(a):
int** macierz1
Macierz *macierz1

No i co w związku z tym?

To, że nie możesz mieć dwóch zmiennych o tej samej nazwie


Pozostało 580 znaków

2015-11-01 16:53
amadeusz1
0
ujemny napisał(a):
amadeusz1 napisał(a):
ujemny napisał(a):
int** macierz1
Macierz *macierz1

No i co w związku z tym?

To, że nie możesz mieć dwóch zmiennych o tej samej nazwie

Racja, dzięki.
Drugi problem dotyczy tego, że mam trochę "chałupniczo" zrobiony konstruktor kopiujący... jak powinien wyglądać taki konstruktor 'z prawdziwego zdarzenia'?

Pozostało 580 znaków

2015-11-01 17:22
0

Konstruktory


nie najlepszy ten artykuł - twonek 2015-11-01 17:33
w sumie to nie czytałem założyłem, że jest dobrze opisane xD - ujemny 2015-11-01 17:34
strona też jakaś taka szemrana - Patryk27 2015-11-01 18:30

Pozostało 580 znaków

2015-11-01 18:29
amadeusz1
0
ujemny napisał(a):

Konstruktory

Czyli w sumie chodzi o skopiowanie początkowej tablicy, pytanie w jaki sposób poprawnie kopiować te elementy?

Macierz::Macierz(const Macierz &podstawowy){
    for (int i = 0; i < wiersze; i++){
        for (int j = 0; j < kolumny; j++){

//?

        }
    }
}

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0