Redefinicja klasy
Ostatnio zmodyfikowano 2016-11-02 15:29
latajacaryba Temat założony przez niniejszego użytkownika |
Redefinicja klasy » 2016-10-22 19:39:40 Witam. W swojej książce "Symfonia c++ standard" Jerzy Grębosz pisze, że warto tworzyć dla każdej klasy osobny plik. Problem jest jednak tu:
#include <iostream> using namespace std;
class X { int a; int b; public: void funk() { a = 5; b = 6; cout << a << " , " << b; } };
#include <iostream> #include "head.h" using namespace std;
void funk2( X r ) { r.funk(); }
#include <iostream> #include "head.h" #include "head2.h" using namespace std; int main() { X abc; abc.funk(); funk2( abc ); }
Program wyrzuca następujące błędy: ||=== Build: Debug in projekt5 (compiler: GNU GCC Compiler) ===| D:\Inne_z_pulpitu\projekt5\head.h|4|error: redefinition of 'class X'| D:\Inne_z_pulpitu\projekt5\head.h|4|error: previous definition of 'class X'| ||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===| Podobno tak być nie powinno. O co chodzi? |
|
mateczek |
» 2016-10-22 19:53:04 Masz podwójnie dołączony plik nagłówkowy Dlatego IDE automatycznie dołączają takie wstawki by zapobiec temu #ifndef KLASA_H #define KLASA_H
#endif
#include <iostream>
#include "head2.h" using namespace std; int main() { X abc; abc.funk(); funk2( abc ); } |
|
latajacaryba Temat założony przez niniejszego użytkownika |
» 2016-10-22 20:09:23 Ohhh :D Nie podejrzewałem tego, bo autor pisał, że IDE samo nam to załatwi. Dzięki |
|
mateczek |
» 2016-10-22 20:28:33 jeśli w menu IDE "dasz dodaj nową klasę" to szablon nowej klasy doda na wstępie te dyrektywy |
|
latajacaryba Temat założony przez niniejszego użytkownika |
» 2016-10-23 02:00:29 Czyli jeśli w pliku np. Main dołączymy pliki X oraz Y to plik X bedzie mógł korzystać ze zmiennych itp. z pliku Y?
|
|
mateczek |
» 2016-10-23 07:58:34 nie będzie mógł. trzeba zrobić tak :
#include y.h
#include x.h
int main() { y zmiennaTypuY; }
|
|
pekfos |
» 2016-11-02 15:29:06 Czyli jeśli w pliku np. Main dołączymy pliki X oraz Y to plik X bedzie mógł korzystać ze zmiennych itp. z pliku Y? |
Jeśli pliki będą zawsze dołączane we właściwej kolejności, to tak. Jednak poleganie na kolejności dołączania to zła praktyka. |
|
« 1 » |