Ir ao conteúdo
  • Cadastre-se
_rsd_17

C++ sobrecarga do operador == com arrays

Recommended Posts

Ola estou a tentar fazer uma sobrecarga do operador ==  para a classe tabuleiro, jogo do galo . Mas da me erro e nao percebo o porque.

 

bool tabuleiro::operator == (const tabuleiro T)const
{
	for (int i = 0; i < 3; ++i)
	{
		for (int j = 0; j < 3; ++j)
		{
			if (tab[i][j] != T[i][j])
			{
				// Return an error, or print "error there is a duplicate value" etc
			}
		}
	}
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá! Tudo certo?

Então ...

 

Eu acho que entendi um pouco do seu problema; porém antes gostaria de confirma 100% disso. Diga-me, você tem para esse class um método que compara duas instâncias dessa mesma classe? Aproposito, qual livro você está usando como referência de estudo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@AnsiC nao estou usando nenhum livro, é para a cadeira de lab temos que criar o jogo do galo

na classe tabuleiro tenho:

.cpp:

#include "pch.h"
#include "tabuleiro.h"
#include <iostream>

using namespace std;

tabuleiro::tabuleiro()
{//CONSTRUTOR POR DEFEITO

	int x, y;
	sup_esq.Set_x(20);
	sup_esq.Set_y(15);
	//A MATRIZ É INICIALIZADA A ZEROS
	for (x = 0; x< 3; x++) {
		for (y = 0; y < 3; y++) {
			tab[x][y] = ' ';
		}
	}
}


tabuleiro::~tabuleiro()
{//DESTRUTOR
}

void tabuleiro::desenhar(void)
{
	cout << "\n\n\n\n";
	cout << "\n" << "\t 1   2   3\n\n\n"; // coloca os numeros   0, 1 e 2 para identificar ao jogador as  colunas da matriz : na linha -
	cout << "    1" << "\t";//coloca  o 0 na  primeira linha da matriz para indicar a primeira linha ao jogador : na lateral |

	//desenha a parte inicial da matriz
	cout << tab[0][0] << "  | " << tab[0][1] << " | " << tab[0][2] << "\n" << "\t---|---|--- \n";
	//coloca  o 1 na  segunda linha da matriz para indicar a segunda linha ao jogador : na lateral |
	cout << "    2" << " \t";
	//desenha a parte central da matriz
	cout << tab[1][0] << "  |" << tab[1][1] << "  | " << tab[1][2] << "\n" << "\t---|---|---\n";
	//coloca  o 2 na  terceira linha da matriz para indicar a terceira linha : na lateral |
	cout << "    3" << "\t";
	//desenha a parte final da matriz
	cout << tab[2][0] << "  |" << tab[2][1] << "  | " << tab[2][2] << "\n" << endl;
	cout << "\n \n ";

}

void tabuleiro::gotoxy(int x, int y)
{
	CursorPosition.X = x;
	CursorPosition.Y = y;
	SetConsoleCursorPosition(console, CursorPosition);
}

bool tabuleiro::operator == (const tabuleiro T)const
{
	/*for (int i = 0; i < 3; ++i)
	{
		for (int j = 0; j < 3; ++j)
		{
			if (tab[i][j] != T[i][j])
			{
				// Return an error, or print "error there is a duplicate value" etc
			}
		}
	}*/

	return false;
}
.h
#pragma once
#include "ponto.h"
#include "jogador.h"


class tabuleiro
{
private:
	ponto sup_esq;
	char tab[3][3];

	//buscado no side - utilizado para colocar o cursor na posiçao 
	HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD CursorPosition;

public:
	tabuleiro();
	virtual ~tabuleiro();
	void desenhar(void);
	void gotoxy(int x, int y); //metodo para as coordenadas que desenham


	void SetTab(ponto p, jogador s) {
		p.Get_x();
		p.Get_y();
		s.nomes();
	}

	int GetTab(void) {
		return tab[3][3];
	}

	bool operator ==(const tabuleiro tab)const;
};

tenho a sobrecarga dos operadores == como comentario porque ela da erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo bem então:

Seu problema é que está acessando a variável T como se fosse o seu atributo tab, você precisa de um método para isso já que o dito cujo é private.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@AnsiC pode me dar um exemplo? nao percebo 

a sobrecarga para o ponto por exemplo é fácil de fazer mas esta com arrays estou a nora 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×