C/C++

láma kérdés c++

Fórumok

ha az osztályokat amiket használok külön cpp fájban implementálom, akkor a g++ -nak hogyan tudom megmondani, hogy a 2.cpp -ben lévő öröklődés az 1.cpp fájlban található osztályra hivatkozik?

pl:

1.cpp


class CPolygon {
  protected:
    int width, height;
  public:
    void set_values (int a, int b)
      { width=a; height=b;}
  };

2.cpp


#include <iostream>
using namespace std;

class CRectangle: public CPolygon {
  public:
    int area ()
      { return (width * height); }
  };

class CTriangle: public CPolygon {
  public:
    int area ()
      { return (width * height / 2); }
  };
  
int main () {
  CRectangle rect;
  CTriangle trgl;
  rect.set_values (4,5);
  trgl.set_values (4,5);
  cout << rect.area() << endl;
  cout << trgl.area() << endl;
  return 0;
}

szóval hogyan tudnám ezt lefordítani, mivel a g++ -o teszt 1.cpp 2.cpp fordítási hibát ad:

2.cpp:4: error: expected class-name before '{' token
2.cpp: In member function 'int CRectangle::area()':
2.cpp:7: error: 'width' was not declared in this scope
2.cpp:7: error: 'height' was not declared in this scope
2.cpp: At global scope:
2.cpp:10: error: expected class-name before '{' token
2.cpp: In member function 'int CTriangle::area()':
2.cpp:13: error: 'width' was not declared in this scope
2.cpp:13: error: 'height' was not declared in this scope
2.cpp: In function 'int main()':
2.cpp:19: error: 'class CRectangle' has no member named 'set_values'
2.cpp:20: error: 'class CTriangle' has no member named 'set_values'

Ha egy fájlban van minden akkor simán lefordul.

C switch találós kérdés

Fórumok

Mi a hiba az alábbi kód végén lévő switch-ben?
Ha a C_TO_F helyére 0-t írok, akkor a hibaüzenet eltűnk. Miért nem megy a #define ?

callbacks.c: In function ‘compute_temp’:
callbacks.c:74: error: expected ‘:’ or ‘...’ before ‘;’ token
callbacks.c:74: error: expected expression before ‘:’ token
callbacks.c:78: error: expected ‘:’ or ‘...’ before ‘;’ token
callbacks.c:78: error: expected expression before ‘:’ token
make: *** [callbacks.o] Error 1


#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#include <gnome.h>

#include "callbacks.h"
#include "interface.h"
#include "support.h"

#define C_TO_F 0;
#define F_TO_C 1;

void
on_quit1_activate                      (GtkMenuItem     *menuitem,
                                        gpointer         user_data)
{
	gtk_main_quit();
}


void
on_properties1_activate                (GtkMenuItem     *menuitem,
                                        gpointer         user_data)
{

}


void
on_preferences1_activate               (GtkMenuItem     *menuitem,
                                        gpointer         user_data)
{

}


void
on_about1_activate                     (GtkMenuItem     *menuitem,
                                        gpointer         user_data)
{

	GtkWidget *about;
	about = create_gtemp_about();
	gtkwidget_show(about);
}


void
on_quit_button_clicked                 (GtkToolButton   *toolbutton,
                                        gpointer         user_data)
{
	gtk_main_quit();
}


void
on_fahr_entry_activate                 (GtkEntry        *entry,
                                        gpointer         user_data)
{
	gchar * fahr = NULL;
	
}

void
compute_temp							(GtkWidget *this_widget,
										 float temp,
										 int type) 
{
	GtkWidget *other_widget = NULL;
	float result = 0.0;
	gchar *result_string = NULL;
	switch (type) {
		case C_TO_F: // ez a rossz sor<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
			//result = ((9.0/5.0) * temp) + 32.0;
			//other_widget = lookup_widget(this_widget, "fahr_entry");
			break;
		case F_TO_C:
			result = (5.0/9.0)*(temp-32.0);
			other_widget = lookup_widget(this_widget, "cel_entry");
			break;
	}
	result_string = g_strdup_printf("%5.2f", result);
	gtk_entry_set_text(GTK_ENTRY(other_widget), result_string);
	gtk_free(result_string);
}

Mac OS X + universal binary szivas

Fórumok

adott egy iBook G4, Mac OS X 10.4, XCode 2.5.

szeretnek universal binary lib-et es binarist kesziteni a kovetkezo file-okbol:$ cat main.,c
#include
#include "libtest.h"

int main(int argc, char **argv)
{
printf("main()\n");

libtest();

return 0;
}

$ cat libtest.h
#ifndef _LIBTEST_H_INCLUDED_
#define _LIBTEST_H_INCLUDED_

int libtest(void);

#endif /* _LIBTEST_H_INCLUDED_ */

$ cat libtest.c
#include
#include "libtest.h"

int libtest(void)
{
printf(" libtest()\n");

return 0;
}

$ gcc -fPIC -c -o obj/libtest.o libtest.c -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386
$ gcc -dynamiclib -o libtest.dylib -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 ../obj/libtest.o
$ gcc -c -o obj/main.o main.c -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386
$ gcc -o bin/main -L/Users/shogy/aws/tmp/lib -ltest -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 obj/main.o

a lib es a binaris letre is jon szepen, a problema:
$ otool -L bin/main
bin/main:
/var/tmp//cc4rO8rA.out (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.9)

azaz nem a libtest.dylib-et linkeli be, hanem - valoszinuleg - egy forditaskor keletkezo temp vackot.

az eloallitott object-ek, lib es a binaris epp azokat az arch-okat tartalmazza, amiket kertem:

$ file obj/*.o
obj/libtest.o: Mach-O fat file with 2 architectures
obj/libtest.o (for architecture ppc): Mach-O object ppc
obj/libtest.o (for architecture i386): Mach-O object i386
obj/main.o: Mach-O fat file with 2 architectures
obj/main.o (for architecture ppc): Mach-O object ppc
obj/main.o (for architecture i386): Mach-O object i386

$ file lib/libtest.dylib
lib/libtest.dylib: Mach-O fat file with 2 architectures
lib/libtest.dylib (for architecture ppc): Mach-O dynamically linked shared library ppc
lib/libtest.dylib (for architecture i386): Mach-O dynamically linked shared library i386

$ file bin/main
bin/main: Mach-O fat file with 2 architectures
bin/main (for architecture ppc): Mach-O executable ppc
bin/main (for architecture i386): Mach-O executable i386

amit kideritettem:
- a kulcs az, hogy a lib-be hany arch-ot pakolok. ha az csak ppc vagy csak i386 (es ertelemszeruen a binaris is), akkor a binaris jo lib-re fog hivatkozni:
$ otool -L bin/main
bin/main:
libtest.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.9)

- ha a lib multi-arch de a binaris single-arch, akkor is elcseszi a lib hivatkozast

probaltam google-al hasonlo problemat talalni, de nem talaltam.

mar a legujabb 2.5-os xcode-ot is letoltottem, de az eredmeny ugyanaz.

- van valakinem valami otlete, hogy mit cseszek el?

koszi,

shogy

fscanf kérdés

Fórumok

conf= fopen (conf_file,"r");
do

{
fscanf(conf,"%[^\n]s",ossz);
printf("%s\n",ossz);
}
while (!feof(conf));

ez miért nem olvassa végig a file-t?

Qt win alatt

Fórumok

Sziasztok!

Tudom, hogy ez nem egy wines fórum, de nincs senki, akitől segítséget kérhetnék...
Xp alatt qt-t szeretnék használni, mert linux alatt igencsak megszerettem ezt a kis fejlesztő eszközt...
A probléma ott kezdődik, hogy alap telepítésbe a mysql driver nem került bele, ezek meg nemigen csináltak semmit:
# configure -plugin-sql-mysql
# make

Tud valaki segíteni, hogy mit hagytam ki? Nagyon szépen megköszönném...

Üdv.: S81

JPEG adatból RGB adat

Fórumok

A következő probléma áll elöttem: JPEG adatból kellene RGB adatra konvertálnom.
JPEG adat az letöltéskor keletkezik, de nem akarom fájlba kiirni (ki lehet irni, jó az adat), most pillanatnyilag egy string tárolja.
Ezt az adathalmazt kellene átkonvertálnom RGB-re, hogy meg tudjam jeleníteni mindenféle fájlművelet nélkül.
A megjelenítésre elvileg a gdk_pixbuf_new_from_data() függvény (vagy valami hasonló) jó is lenne, csakhogy RGB-ben kéri be a képet.

Valaki foglalkozott már e ilyesmivel? Valami tippek? Minden infót szivesen várok!

C kérdés

Fórumok

Helló,

két kérdésem volna.
1, Ha csak a szabványos C könyvtárakat lehet használni (sulis házi, mennie kell Windowson és Linuxon is) akkor hogy tudom egy fájl hosszát megtudni.
2,
int distance(Station* stationA,Station* stationB){
return (SPEED/3600) * sqrt(pow(stationA->x - stationB->x,2)+pow(stationA->y - stationB->y,2));
}

Föntire azt írja hogy, undefined reference to 'sqrt'. Miért van ez?

Ha ezt írom:

int distance(Station* stationA,Station* stationB){
return (SPEED/3600) * sqrt(5);
}

akkor simán lefordul.

Előre is köszi a válaszokat.
üdv
Szati

gyerek szigna'l

Fórumok

Sziasztok!
Kovetkezo" a problema. Van egy program, forkolja magat jo sok peldanyban es a szulo oldalon a SIGCHLD elkapa'sa'val szeretnek tudomast venni a child processzek leallasarol. Ugy tunik azonban, hogyha masszivabb a terheles (sok prosszesz, sok peldanyban), akkor random modon egy-egy (neha tobb) gyerek leallasakor nem jon meg a szigna'l. A gyerekek teljesen termeszetes modon allnak le. Tovabba ugy tunik, hogy minel tobb a jarulekos i/o (file muvelet, file-ba iras) a parent reszerol, annal nagyobb a valoszinusege, hogy nem jon meg a szignal.
Amit eddig neztem, az a sigaction()-nak a finomhangolasa, SA_NOCLDSTOP|SA_SIGINFO|SA_RESTART|SA_NODEFER-t adok meg a SIGCHLD esetere, mikozben a sa_mask ures (semmi extra egyeb szignal nem kavar be). Ami me'g megbolondithatja a dolgot, hogy a parent signal handler egy FIFO-ba (pipe()) irkal, amit a parent mas ponton kiolvas (igy gyk. select()-tel azonnal meg tudom kapni hogy ki mikor allt le). A waitpid()-et sima blokking uzemben hasznalom (nincs WNOHANG), probaltam a handler-be magaba betenni (igy abban lenyegeben ez a waitpid() es a FIFO-ba valo irkalas, egy write() az osszes rendszerhivas); illetve ugy is, hogy a FIFO-ba a handler beleirja a pid-et, es a select() utan, amennyiben errol a FIFO-rol jott valami, kiolvassa a pid-et, es bevarja a gyereket. Igy viszont, hogy a sigchld neha nem jon be, el se jut a waitpid()-ig, igy nehany processz zombikent beragad, ami hatarozottan nem jo...
Valakinek hasonlo tapasztalata/otlete/izeje?
Koszi, A.

Egy autodidakta C/C++ tanuló kérdései

Fórumok

A címből kiderül, hogy saját örömömre C/C++-t tanulok mert élvezem (Akarok asm-et is de előbb C/C++). Kitaláltam írok egy sudoku megoldót (mint kiderült utólag az egyik haver programozó azt mondta eddig úgy néz ki amit írtam mit egy kutya bonyolult back-track, szóval feltaláltam a melegvizet, de sabaj élvezem. Soha nem tanultam "mestint"-et), mivel magamnak tanulom kicsit csúnya a kód és nem elegáns de működik. Majd belejövök. Pl nem szoktam különboző álományokat írni, hanem egy nagy állomány, de azt addig optializálom ameddíg bírom. Na szóval a magam stílusában gyak bármit megírok amihez értek. (Mivel fizikus vagyok ez többnyire numerikus matematikai problémákat jelent.) Viszont most kitaláltam hogy szépen is meg akarok tanulni programozni mert így a kódok amit csinálok másnak káosz, csak nekem nem mert én tudom mi mit jelent (legalábbis rövidtávon de mindík kommentezek).Na első kérdés.

Miben jobb a muatótömb mint a statikus? (Meg tudom mind a kettőt csinálni, mert a könvben amiből tanultam le van írva hogy hogyan kell de semmi magyarázat hol jobb miért jobb, vagy rosszabb stb.. annyit tudok hogy a mutatókból definiált az futási időben felszabadítható. De ezen kívül?)

Azt is olvastam hogy a mutatótömb elérése gyorsabb mutatókon keresztül. Tudom, hogy hogyan kell ezt megvalósítani cím/adatátadással p=&a és a társai de miért gyorsabb? Szertném érteni, hogy ki tudjam használni, és ne csak a saját örömömre írjak bonyolutabb kódot.

Másik szeretm kihagyni a segédváltozókat, ezért néha orbitális hosszú kifejezéseim vannak mint pl:
oszlop [vizsgalt_szam][0]= ++oszlop[vizsgalt_szam][oszlop[vizsgalt_szam][0]];
(ez a rövidebbek közé tartozik még :D csak most a sudoku-megoldómban ez a leghosszabb) Mennyire húzós dolog ez? Nyerek vele sebességet? Vagy csak túlbonyolítom a problémát.

Minek írjak valamiből fügvényt, ha nem kell x-milliószor használni, ha valamit még egyszer végre kjell hajtani kivág beilleszt, és kész (Ezt azért kérdezem mert a könyvemben a példék egy két soros kiiratásból is külön függvényt csinál, szerintem csak tulspirázás.). Tudom hogy hízlalja a kódot, és nagyob lesz a futtatható állomány, ami nagyobb az meg majdnem bioztos hogy lomhább is, de én nem csinálok külön függvényt, csak akkor ha az megérdemli. Pl Az emített sudokumegoldómban van 4 fügvény egy rosta, egy tipp, egy ellenőrző és egy visszalépő fügvény ezekt ismétli addig amíg van üres rekesz. Ha meg telerakomm mindenből fügvény visszatéréelemzés.... Nehogy már egy printf / cout ne fusson le sima kiratásnál a képernyőre mit ellenőrizgessem, hogy mivel tért vissza. Ami megérdemli azt ellenőrzöm.

Hirtelen elfogytak a kérdések de szarintem lesz még. Most kicsit úgy érzem magaam mint akinek azt mondják, hogy ne pofázz csináld.

Előre is köszi a segítő válaszokat.
Krisztián

syslog kezeles

Fórumok

Hi!
syslogot hasznalnek, a LOCAL0 -t alitottam be.
minden jol muxik, csak a logot a konzol kepernyore is kiirja, ezt hogy lehet eltuntetni?

elore is koszonom
zsomi