• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Visual Studio 14, Własna klasa: "error C3646" oraz "error C4430"

Object Storage Arubacloud
0 głosów
845 wizyt
pytanie zadane 4 marca 2016 w C i C++ przez Caspariano Użytkownik (760 p.)
zamknięte 4 marca 2016 przez Caspariano

Witam, czytałem już o występujących u mnie błędach na innych forach. Ktoś poradził aby zmienić nazwę zmiennej, tak też zrobiłem i pomogło, program się kompiluje nie wyrzuca błędu. Jednak po kilku kompilacjach błąd wyskakuje ponownie już dla nowej nazwy zmiennej nic z tego nie kumam.
 

#pragma once
#include "SFML/Graphics.hpp"
#include "Scores.h"
#include "GameSettings.h"
#include "Player.h"


using namespace sf;
using namespace std;

class Engine
{
public:
	Engine(RenderWindow &win, Sprite sprite_background, Font f_font);
	~Engine();

	RenderWindow *window;

	void runEngine();
	
	
private:
	
	RectangleShape playing_field;

	Font font;
	Sprite background;

	Player player;
	

	void draw();
	void update();



	
};
#pragma once
#include "Snake.h"
#include "Game.h"
#include "SFML/Graphics.hpp"
#include <Windows.h>


using namespace sf;
using namespace std;

class Player
{
public:
	Player();
	~Player();

	Snake snake[400];
	Texture snake_texture;
	
	Sprite headUP, headDOWN, headLEFT, headRIGHT;
	Sprite tailUP, tailDOWN, tailLEFT, tailRIGHT;
	Sprite CornerUR_LD, CornerDL_RU, CornerRD_UL, CornerDR_LU;
	Sprite BodyUP_DOWN, BodyLEFT_RIGHT;
	
	int parts_number;

	

	void add_part();
	void update();
	
private:

	void set_texures();
	void move();


};

 

 

Oraz błedy:

1>d:\c++\sfml projects\snake\snake\engine.h(29): error C3646: 'player': unknown override specifier
1>d:\c++\sfml projects\snake\snake\engine.h(29): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int


 

komentarz zamknięcia: Problem rozwiązany

4 odpowiedzi

0 głosów
odpowiedź 4 marca 2016 przez MetGang Nałogowiec (34,360 p.)
wybrane 16 marca 2016 przez Caspariano
 
Najlepsza

Według drugiego błędu zapomniałeś gdzieś dać int w definicji funkcji, nie w .h. Pierwszy wskazuję na to, że gdzieś użyłeś niewłaściwie zarezerwowanego słowa (np. jako nazwa zmiennej). Pokaż jeszcze .cpp.

komentarz 4 marca 2016 przez Caspariano Użytkownik (760 p.)
#include "Player.h"

using namespace sf;
using namespace std;



//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//

Player::Player()
{
	if (!snake_texture.loadFromFile("resources/graphics/player.png"))
	{
		MessageBox(NULL, L"No texture found!", NULL, 0);
	    exit(0);
	}

	parts_number = 3;

	for (int i = 0; i < 3; i++)
	{
		snake[i].position = Vector2f(920, 360 + i * 32);
		snake[i].direction = Snake::UP;
	}

	Sprite headUP(snake_texture,IntRect(96,0,32,32)), headDOWN(snake_texture, IntRect(128, 32, 32, 32)), headLEFT(snake_texture, IntRect(96, 32, 32, 32)), headRIGHT(snake_texture,IntRect(128,0,32,32));
	Sprite tailUP(snake_texture,IntRect(96, 64, 32, 32)), tailDOWN(snake_texture, IntRect(128, 96, 32, 32)), tailLEFT(snake_texture, IntRect(96, 96, 32, 32)), tailRIGHT(snake_texture, IntRect(128, 64, 32, 32));
	Sprite CornerUR_LD(snake_texture,IntRect(0, 0, 32, 32)), CornerDL_RU(snake_texture,IntRect(64, 64, 32, 32)), CornerRD_UL(snake_texture, IntRect(64, 0, 32, 32)), CornerDR_LU(snake_texture, IntRect(0, 32, 32, 32));
	Sprite BodyUP_DOWN(snake_texture, IntRect(64, 32, 32, 32)), BodyLEFT_RIGHT(snake_texture, IntRect(32, 0, 32, 32));

	set_texures();

	clock.restart();

}

//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//

Player::~Player()
{
}

//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//

void Player::add_part()
{
}

//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//

void Player::set_texures()
{

	for (int i = 0; i < parts_number; i++)
	{
		
		//HEAD
		if (i == 0)
		{
			switch (snake[i].direction)
			{
			case Snake::UP: 
				snake[i].sprite = headUP;
				snake[i].sprite.setPosition(snake[i].position); break;
			case Snake::DOWN:
				snake[i].sprite = headDOWN;
				snake[i].sprite.setPosition(snake[i].position); break;
			case Snake::LEFT:
				snake[i].sprite = headLEFT;
				snake[i].sprite.setPosition(snake[i].position); break;
			case Snake::RIGHT:
				snake[i].sprite = headRIGHT;
				snake[i].sprite.setPosition(snake[i].position); break;
			}
		}
	
		//TAIL
		else if (i == parts_number - 1)
		{
			switch (snake[i].direction)
			{
			case Snake::UP:
				snake[i].sprite = tailUP;
				snake[i].sprite.setPosition(snake[i].position); break;
			case Snake::DOWN:
				snake[i].sprite = tailDOWN;
				snake[i].sprite.setPosition(snake[i].position); break;
			case Snake::LEFT:
				snake[i].sprite = tailLEFT;
				snake[i].sprite.setPosition(snake[i].position); break;
			case Snake::RIGHT:
				snake[i].sprite = tailRIGHT;
				snake[i].sprite.setPosition(snake[i].position); break;

			}
		}

		//CORNERS
		                     //up-right      left-down
		else if (snake[i - 1].direction == Snake::UP && snake[i + 1].direction == Snake::RIGHT ||
			     snake[i - 1].direction == Snake::LEFT  && snake[i + 1].direction == Snake::DOWN  )
			snake[i].sprite = CornerUR_LD;

		
		                    //down-left    right-up
		else if (snake[i - 1].direction == Snake::DOWN && snake[i + 1].direction == Snake::LEFT ||
			     snake[i - 1].direction == Snake::RIGHT  && snake[i + 1].direction == Snake::UP)
			snake[i].sprite = CornerDL_RU;

		                   //right - down      up-left
		else if (snake[i - 1].direction == Snake::RIGHT && snake[i + 1].direction == Snake::DOWN ||
			snake[i - 1].direction == Snake::UP  && snake[i + 1].direction == Snake::LEFT)
			snake[i].sprite = CornerRD_UL;

		                  //down - right      left-up
		else if (snake[i - 1].direction == Snake::DOWN && snake[i + 1].direction == Snake::RIGHT ||
			snake[i - 1].direction == Snake::LEFT  && snake[i + 1].direction == Snake::UP)
			snake[i].sprite = CornerDR_LU;

		
        //BODY		
		if (snake[i - 1].direction == snake[i].direction && snake[i].direction == Snake::LEFT || snake[i].direction == Snake::RIGHT)
			snake[i].sprite = BodyLEFT_RIGHT;

		if (snake[i - 1].direction == snake[i].direction && snake[i].direction == Snake::UP || snake[i].direction == Snake::DOWN)
			snake[i].sprite = BodyUP_DOWN;
		
	}
}

//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//

void Player::update()
{
	if (clock.getElapsedTime() >  seconds(0.9f))
	{
		move();
		set_texures();

		clock.restart();
	}
}

//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//

void Player::move()
{
	for (int i = parts_number -1; i >= 1; i--)
	{
		snake[i] = snake[i - 1];

	}


	switch (snake[0].direction)
	{
	case Snake::UP:     snake[0].position.y -= 32;    break;
	case Snake::DOWN:   snake[0].position.y += 32;    break;
	case Snake::LEFT:   snake[0].position.x -= 32;    break;
	case Snake::RIGHT:  snake[0].position.x += 32;    break;

	}


}


komentarz 4 marca 2016 przez Caspariano Użytkownik (760 p.)
Nieważne jaką nazwę zmiennej wybiorę ten błąd wyskakuje cały czas dla klasy Player.
komentarz 4 marca 2016 przez MetGang Nałogowiec (34,360 p.)
Konstruktor, linijki 26-29. Tworzysz nowe sprite'y przy istniejących już nazwach... Przypisz tekstury i recty normalnie za pomocą setTexture().
komentarz 4 marca 2016 przez Caspariano Użytkownik (760 p.)
edycja 4 marca 2016 przez Caspariano
Wiem o tym, zostawiłem to sobie na później, ale nie w tym leży problem bo już sprawdzałem, a dodatkowo problem pojawił się już przed powołaniem do życia tych lini.
komentarz 4 marca 2016 przez MetGang Nałogowiec (34,360 p.)
Trudno znaleźć te błędy. Całego kodu raczej nie ma sensu pokazywać, lecz ułatwiło by to robotę. Sprawdź czy nie używasz jakichś zarezerwowanych słów razem z playerem.
komentarz 4 marca 2016 przez MetGang Nałogowiec (34,360 p.)
Problemem może też być wzajemne includowanie się plików, co potrafi doprowadzić do niezrozumiałych błędów.
0 głosów
odpowiedź 4 marca 2016 przez Caspariano Użytkownik (760 p.)
W momencie kiedy zmieniam nazwę zmiennej na np."gracz"we wszystkich miejscach w których jej używam to program się kompiluje i działa, za drugim zadziała, a za trzecim już jest błąd pomimo iż nic w kodzie nie zmieniałem.
0 głosów
odpowiedź 4 marca 2016 przez Avernis Nałogowiec (27,400 p.)
Tutaj masz wszystkie błędy kompilatora VS https://msdn.microsoft.com/pl-pl/library/ms173696.aspx
0 głosów
odpowiedź 4 marca 2016 przez Caspariano Użytkownik (760 p.)
Okay, udało mi się to naprawić. Wystarczyło skasować 3 linię w pliku nagłówkowym "Player.h".

Podobne pytania

0 głosów
1 odpowiedź 666 wizyt
pytanie zadane 29 marca 2020 w C i C++ przez nifeone Początkujący (370 p.)
0 głosów
1 odpowiedź 290 wizyt
pytanie zadane 3 marca 2023 w C i C++ przez Wiktor51207 Początkujący (380 p.)
0 głosów
1 odpowiedź 166 wizyt

92,568 zapytań

141,422 odpowiedzi

319,638 komentarzy

61,957 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...