การเข้าถึงตัวแปรภายนอกคลาส

ฉันมีตัวแปรในไฟล์ main.cpp ดังนี้:

SDL_Renderer* gRenderer = NULL;

และฉันมีคลาสที่อยู่ในไฟล์แยกกัน (ไฟล์ .h และ .cpp) ภายในไฟล์ .cpp ฉันต้องการเข้าถึง gRenderer ดังนี้:

newTexture = SDL_CreateTextureFromSurface( gRenderer, loadedSurface );

ฉันได้ลองใส่ SDL_Renderer ไว้ในคลาสแล้ว แต่เมื่อฉันคอมไพล์มันทำให้ฉันมีคำเตือนเดียวเท่านั้นว่าไม่ได้ใช้งาน และเมื่อฉันรันโปรแกรม ฉันจะได้รับข้อความจาก SDL_GetError() :

"ไม่สามารถสร้างพื้นผิวจาก colours.png! ข้อผิดพลาด SDL: ตัวเรนเดอร์ไม่ถูกต้อง"

ฉันจะทำสิ่งนั้นภายในคลาสที่อยู่ในไฟล์แยกได้อย่างไร


person Shago    schedule 04.02.2015    source แหล่งที่มา
comment
gRenderer เป็นโมฆะเมื่อคุณส่งผ่านไปยัง SDL_CreateTextureFromSurface หรือไม่   -  person James Moore    schedule 04.02.2015
comment
คุณอาจต้องการเพียงตัวเรนเดอร์เดียวเท่านั้น   -  person Julian    schedule 04.02.2015
comment
ส่งผ่านตัวแปรไปยังตัวสร้างคลาสหรือฟังก์ชันที่เกี่ยวข้อง   -  person molbdnilo    schedule 04.02.2015


คำตอบ (1)


ในการเข้าถึงไฟล์นั้นจะต้องรวมอยู่ในไฟล์ที่จะใช้งาน ดังนั้น คุณควรย้ายการประกาศตัวแปรไปยังไฟล์ส่วนหัว (เช่น main.h) และรวมไว้ใน main.ccp และในไฟล์ที่จะใช้

อย่างไรก็ตาม ในการทำเช่นนั้น ในไฟล์ส่วนหัว คุณควรประกาศว่าเป็น extern และใน main.cpp กำหนดไว้ตามปกติ:

main.h
extern SDL_Renderer* gRenderer;

main.cpp
SDL_Renderer* gRenderer = NULL;

ด้วยวิธีนี้ ตัวแปรจะถูกกำหนดและสามารถใช้กับหลายไฟล์ได้ตามปกติ โดยคงค่าของมันไว้

หากคุณต้องการข้อมูลเพิ่มเติม: ฉันจะใช้ extern เพื่อแชร์ตัวแปรระหว่างไฟล์ต้นฉบับได้อย่างไร

person Tarc    schedule 04.02.2015