pompom |
» 2009-07-22 13:53:51 IDE musi coś dodawać. Jakiego kompilatora używasz? GCC? Btw: cObject::cObject() { string m_strName = "Object"; int m_iPositionX = 0; int m_iPositionY = 0; BITMAP * m_bmImage = create_bitmap( 50, 50 ); int m_iWidth = 50; int m_iHeight = 50; }
Ustawiasz zmienne lokalne które znikają zaraz po wywołaniu konstruktora. Stąd te warningi. Powinienieś raczej napisać: cObject::cObject() : m_strName( "Object" ) , m_iPositionX( 0 ) , m_iPositionY( 0 ) , m_bmImage( create_bitmap( 50, 50 ) ) , m_iWidth( 50 ) , m_iHeight( 50 ) { }
Btw - notacja węgierska to zło. Może i miała jakiś sens w C, ale w C++ nie ma żadnego - kod jest tylko brzydszy i mniej uniwersalny. A konstruktor ustawiający składową b to np: "A(int b_) : b(b_) {}". W końcu używasz składowej częściej, niż argumentu konstruktora. |
|
steckel Temat założony przez niniejszego użytkownika |
» 2009-07-22 18:43:49 @JCJ - Jaki dokładnie potrzebujesz screen? Tu masz linker: http://img43.imageshack.us/img43/1/screengwr.jpg@pompon - Używam GNU GCC compiler, standardowy. Pierwszy raz się spotykam z takim zapisem. Notacja węgierska to te wszystkie standardy kodowania? Jeżeli tak to jak należy kodować? Masz może jakąś stronkę, która opisuje tą metodę: cObject::cObject() : m_strName( "Object" ) , m_iPositionX( 0 ) , m_iPositionY( 0 ) , m_bmImage( create_bitmap( 50, 50 ) ) , m_iWidth( 50 ) , m_iHeight( 50 ) { }
|
|
pompom |
» 2009-07-22 19:57:14 To jest tzw. lista inicjalizacyjna, w Twoim kodzie jest równoważna ustawianiu składowych w konstruktorze. (Gdybyś usunął deklarację zmiennych lokalnych, czyli typy) Zamiast "int a = cos" "a = cos". "int a" deklaruje zmienną lokalną dla bloku (w tym wypadku konstruktora) a "a" odnosi się do składowej klasy. Stąd te warningi - bo składowych klasy w ogóle nie używasz. Ogólnie lista inicjalizacyjna umożliwia ustawianie referencji, zmiennych const i wywoływanie konstruktorów superklas (czyli tych z których dziedziczysz) z parametrami, czego nie da się zrobić w kodzie konstruktora. Jest też czytelniejsza, bo wyraźnie widać co ten konstruktor ustawia w klasie. A co do błędów - ten code::blocks najwyraźniej robi z kodem dziwne rzeczy. D:\projekty\inne\diablo\main.cpp||In function `int _mangled_main()':| D:\projekty\inne\diablo\main.cpp|7|warning: control reaches end of non-void function|
Tego warningu nie powinno w ogóle być. Ściągnij Visual C++ Express i używaj go... |
|
steckel Temat założony przez niniejszego użytkownika |
» 2009-07-22 20:40:05 Mam ten program, ale on też jest jakiś dziki. Napisałem taki program: #include <string> #include <ctime>
int main() { return 0; }
logi: 1>------ Build started: Project: dfg, Configuration: Debug Win32 ------ 1>Compiling... 1>main.cpp 1>c:\program files\microsoft visual studio 9.0\vc\include\stddef.h(6) : fatal error C1021: invalid preprocessor command 'include_next' 1>Build log was saved at "file://c:\Documents and Settings\User\Moje dokumenty\Visual Studio 2008\Projects\dfg\dfg\Debug\BuildLog.htm" 1>dfg - 1 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
|
|
pompom |
» 2009-07-22 20:53:30 Wtf? Masz porządnie namieszane w systemie, a dokładniej w ścieżkach do plików include. O ile się nie myle include_next to rozszerzenie gcc którego Visual nie wspiera. Nie jest przypadkiem tak, że z jakiegoś powodu coś ci nadpisało (np. dev-cpp) pliki include visuala swoimi i teraz oba kompilatory używają tego samego katalogu? Najszybciej będzie chyba zainstalować vs od nowa (jakieś 10 minut?). Czy początek stddef.h wygląda tak? /*** *stddef.h - definitions/declarations for common constants, types, variables * * Copyright (c) Microsoft Corporation. All rights reserved. * *Purpose: * This file contains definitions and declarations for some commonly * used constants, types, and variables. * [ANSI] * * [Public] * ****/
Jeśli nie, to masz nadpisane. Ewentualnie mogę skompresować cały katalog include i gdzieś wgrać, tylko sobie skopiujesz. |
|
steckel Temat założony przez niniejszego użytkownika |
» 2009-07-22 22:26:06 Rzeczywiście, prawdopodobnie podmieniłem pliki przy instalacji DirectX SDK. Uruchomiłem instalator i wybrałem opcję naprawy. Teraz działa najprostszy program, lecz przy moim wysypują się błedy: 1 >------Build started: Project: dfg, Configuration: Debug Win32------ 1 > Compiling... 1 > class.cpp 1 > c:\p rogram files\microsoft visual studio 9.0\vc\include\allegro\gfx.h( 275 ) : warning C4200 : nonstandard extension used : zero - sized array in struct / union 1 > Cannot generate copy - ctor or copy - assignment operator when UDT contains a zero - sized array 1 > c:\p rogram files\microsoft visual studio 9.0\vc\include\allegro\rle.h( 34 ) : warning C4200 : nonstandard extension used : zero - sized array in struct / union 1 > Cannot generate copy - ctor or copy - assignment operator when UDT contains a zero - sized array 1 > c:\p rogram files\microsoft visual studio 9.0\vc\include\allegro\font.h( 31 ) : warning C4200 : nonstandard extension used : zero - sized array in struct / union 1 > Cannot generate copy - ctor or copy - assignment operator when UDT contains a zero - sized array 1 > c:\p rogram files\microsoft visual studio 9.0\vc\include\allegro\fix.h( 45 ) : warning C4244 : 'return' : conversion from 'double' to 'float' , possible loss of data 1 > d:\p rojekty\inne\diablo\class.cpp( 17 ) : error C2664 : 'load_bmp' : cannot convert parameter 1 from 'const char *' to 'char *' 1 > Conversion loses qualifiers 1 > main.cpp 1 > c:\p rogram files\microsoft visual studio 9.0\vc\include\allegro\gfx.h( 275 ) : warning C4200 : nonstandard extension used : zero - sized array in struct / union 1 > Cannot generate copy - ctor or copy - assignment operator when UDT contains a zero - sized array 1 > c:\p rogram files\microsoft visual studio 9.0\vc\include\allegro\rle.h( 34 ) : warning C4200 : nonstandard extension used : zero - sized array in struct / union 1 > Cannot generate copy - ctor or copy - assignment operator when UDT contains a zero - sized array 1 > c:\p rogram files\microsoft visual studio 9.0\vc\include\allegro\font.h( 31 ) : warning C4200 : nonstandard extension used : zero - sized array in struct / union 1 > Cannot generate copy - ctor or copy - assignment operator when UDT contains a zero - sized array 1 > c:\p rogram files\microsoft visual studio 9.0\vc\include\allegro\fix.h( 45 ) : warning C4244 : 'return' : conversion from 'double' to 'float' , possible loss of data 1 > d:\p rojekty\inne\diablo\class.cpp( 17 ) : error C2664 : 'load_bmp' : cannot convert parameter 1 from 'const char *' to 'char *' 1 > Conversion loses qualifiers 1 > Generating Code...1 > Build log was saved at "file://c:\Documents and Settings\User\Moje dokumenty\Visual Studio 2008\Projects\dfg\dfg\Debug\BuildLog.htm" 1 > dfg - 2 error( s ) , 8 warning( s ) ========== Build : 0 succeeded , 1 failed , 0 up - to - date , 0 skipped ========== |
|
pompom |
» 2009-07-23 03:43:47 http://www.allegro.cc/forums/thread/596774Can anybody tell me what i'm doing wrong? You're copying an install from a completely different compiler and expecting it to work. Btw - czy cytowanie np "[quote="bum"]tekst[/quote]" jest tak trudne do zrobienia? Dodatkowo zagnieżdzanie i code i quote... Ogólnie to nie widzę powodu pisania całkiem nowego cmsa jak i niektórych rozwiazań (sortowanie tematów) ale jak kto chce... |
|
DejaVu |
» 2009-07-23 11:37:41 [quote]ble[/quote] Faktycznie :P tego znacznika nie dodałem. Jest jednak: [cytat],[cite],[cytuj] |
|
1 2 « 3 » 4 5 6 7 |