פורסם 2007 באוקטובר 918 שנים אני רוצה להגדיר מחלקה שתייצג string ואני רוצה שיהיה CONSTRUCTOR שיקבל CONST CHAR* class string{private:char* str;public:string(const char* s);השאלה היא האם בCPP אפשר פשוט להשוות בין s ל str (עם const_cast)?ז"א האם יש התייחסות מיוחדת לchar* או שזה פשוט יגרום לכך שיהיו שני מצביעים לאותה כתובת. ובאותו הקשר אם באמת אי אפשר לעשות השוואה פשוטה וצריך להעתיק תו-תו האם בCPP נוסף תו 0\ אוטומטית לסופו של מערך CHARS למשל אחרי שאני עושה:char* s="Im a noobie";וד"א מה זה EXTERN משתמשים בזה בספר שאני לומד ממנו כמה וכמה פעמים אבל לא טורחים להסביר מה זה ...
פורסם 2007 באוקטובר 918 שנים 1) השוואה בין 2 מחרוזות אמורה להתבצע ע"י strcmp שמוגדרת בstring.h או ע"י אפונקציה אחרת שתבנה. הפונקציה אמורה לעבור תו תו ולהשוות. ההשוואה שאת הצעת תשווה בין המצביעים בלבד, ותחזיר TRUE אך ורק אם 2 המחרוזות מתחילות באותו מקום בזיכרון.2) הקומפיילר מוסיף '\0' אוטו' עבור כל מחרוזת קבועה כזו(ככה הוא גם יודע עד איפה להדפיס ב cout<<"hello world";).3) extern משמש להצהרה על משתנה שלא הוגדר בקובץ הCPP הנוכחי, אלא בקובץ CPP אחר. אני ממליץ שלא להשתמש בדברים כאלה. אם זה חשוב לך, אתה תמיד יכול להעביר מצביע למשתנה כלשהו.
פורסם 2007 באוקטובר 1018 שנים מחבר 1) השוואה בין 2 מחרוזות אמורה להתבצע ע"י strcmp שמוגדרת בstring.h או ע"י אפונקציה אחרת שתבנה. הפונקציה אמורה לעבור תו תו ולהשוות. ההשוואה שאת הצעת תשווה בין המצביעים בלבד, ותחזיר TRUE אך ורק אם 2 המחרוזות מתחילות באותו מקום בזיכרון.2) הקומפיילר מוסיף '\0' אוטו' עבור כל מחרוזת קבועה כזו(ככה הוא גם יודע עד איפה להדפיס ב cout<<"hello world";).3) extern משמש להצהרה על משתנה שלא הוגדר בקובץ הCPP הנוכחי, אלא בקובץ CPP אחר. אני ממליץ שלא להשתמש בדברים כאלה. אם זה חשוב לך, אתה תמיד יכול להעביר מצביע למשתנה כלשהו.תודה ,1) כשדיברתי על להשוות דיברתי על = אחד לא על ==, ואפשר גם לעשות העמסת אופרטור ל= כך שזה יהיה כמו עם המחזרות בJAVA למשל שבמקרה ומשווים 2 מחרוזות (עם =) אין השוואת הפניות אלא זה פועל כמו strcmp2) זה הגיוני P: מאד , עכשיו אני מרגיש קצת טבמל...לא נורא.3) אתה יכול לתת דוגמא להעברה כזו?ד"א זה רק אני או שבJAVA יש פחות כאב ראש (וגם אפשרויות :\ ) ?
פורסם 2007 באוקטובר 1018 שנים קוראים לזה השמה.אה... ו - bla.h fileextern int x;bla.cpp#include "bla.h"int x = 20;main.cpp#include "bla.h"#include <stdio.h>int main(){ printf("%d", x); return 0;}otherfile.cpp#include "bla.h"int func2(int y){ return x + y;}
פורסם 2007 באוקטובר 1018 שנים מחבר האמת היא שהכוונתי לדוגמא של העברת משתנה עם פוינטר בין קבצים ... וידעתי שקוראים לזה השמה
פורסם 2007 באוקטובר 1018 שנים זה בידיוק כפי שאתה מעביר לפונקציות, אין הבדל.לא משנה היכן הקוד שלך, אתה תמיד יכול להעביר לאחת הפונקציות מצביע. רק תדאג לעשות include למקום בו הוא הוגדר.#include <iostream.h>int main(){int x = 20;cout<<"old val: "<<x<<"\n";some_func2(&x);cout<<"new val: "<<x<<"\n";return 0;}void some_func2(int *a){a = 5;}void some_func3(const int *a){a = 5;//oops}
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.