• 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"

VPS Starter Arubacloud
0 głosów
956 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ź 807 wizyt
pytanie zadane 29 marca 2020 w C i C++ przez nifeone Początkujący (370 p.)
0 głosów
1 odpowiedź 359 wizyt
pytanie zadane 3 marca 2023 w C i C++ przez Wiktor51207 Początkujący (380 p.)
0 głosów
1 odpowiedź 268 wizyt

93,004 zapytań

141,969 odpowiedzi

321,248 komentarzy

62,340 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...