Rashmistrz Temat założony przez niniejszego użytkownika |
[błąd kompilacji] invalid initialization of non-const reference of type from an rvalue of type » 2016-06-14 16:14:15 Zwraca mi błąd kompilacji: InitGL.cpp|10|error: invalid initialization of non-const reference of type 'GLuint& {aka unsigned int&}' from an rvalue of type 'GLuint* {aka unsigned int*}'| . Wskazując na wywołanie funkcji: NeHeLoadBitmap( "tekstura.bmp", texture ) . fragment "Globals.hpp": extern GLuint texture[]; . fragment "Globals.cpp": GLuint texture[ 3 ]; . "GlauxReplacement.cpp": #pragma once
#include <windows.h> #include <GL/gl.h> #include <GL/glu.h>
bool NeHeLoadBitmap( LPTSTR szFileName, GLuint * texid ) { HBITMAP hBMP; BITMAP BMP; glGenTextures( 3, texid ); hBMP =( HBITMAP ) LoadImage( GetModuleHandle( NULL ), szFileName, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE ); if( !hBMP ) return FALSE; GetObject( hBMP, sizeof( BMP ), & BMP ); glPixelStorei( GL_UNPACK_ALIGNMENT, 4 ); glBindTexture( GL_TEXTURE_2D, texid[ 0 ] ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); glTexImage2D( GL_TEXTURE_2D, 0, 3, BMP.bmWidth, BMP.bmHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, BMP.bmBits ); glBindTexture( GL_TEXTURE_2D, texid[ 1 ] ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glTexImage2D( GL_TEXTURE_2D, 0, 3, BMP.bmWidth, BMP.bmHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, BMP.bmBits ); glBindTexture( GL_TEXTURE_2D, texid[ 2 ] ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST ); gluBuild2DMipmaps( GL_TEXTURE_2D, 3, BMP.bmWidth, BMP.bmHeight, GL_RGB, GL_UNSIGNED_BYTE, BMP.bmBits ); DeleteObject( hBMP ); return TRUE; }
"GlauxReplacement.hpp": #include <windows.h> #include <GL/gl.h> http: bool NeHeLoadBitmap( LPTSTR szFileName, GLuint & texid );
Najwidoczniej popełniłem gdzieś drobny błąd niezauważalny dla mnie. :/ Przede wszystkim nie rozumiem po polsku co ten błąd oznacza. :C |
|
1aam2am1 |
» 2016-06-14 16:26:13 On nie chce wskaźnika tylko obiekt. |
|
Rashmistrz Temat założony przez niniejszego użytkownika |
» 2016-06-14 16:42:38 Whoops! Deklaracja nie zgadzała się z definicją. :D hpp: bool NeHeLoadBitmap( LPTSTR szFileName, GLuint & texid ); . cpp: bool NeHeLoadBitmap( LPTSTR szFileName, GLuint * texid ) . On nie chce wskaźnika tylko obiekt. |
Mimo tego, nadal nie rozumiem treści błędu i na czym on polega. |
|
jankowalski25 |
» 2016-06-14 17:01:57 #include <iostream>
void f( int & liczba ) { std::cout << liczba << '\n'; liczba = 0; }
int main() { int liczba = 23111; f( liczba ); } |
|
1aam2am1 |
» 2016-06-14 20:57:42 InitGL.cpp|10|error: invalid initialization of non-const reference of type 'GLuint& {aka unsigned int&}' from an rvalue of type 'GLuint* {aka unsigned int*}'|
Znaczy:
błąd: zła inicjalizacja nie stałej wartości typu GLuint& z przekazanej wartości typu GLuint*
Przekazywałeś wskaźnik na początek tablicy a funkcja chciała wyłuskany obiekt. Czyli chciała: NeHeLoadBitmap( "tekstura.bmp", texture[0] ) |
|
« 1 » |