Ir ao conteúdo

Posts recomendados

Postado

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
Postado

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?

Postado

@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

Postado

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.

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...