c++ - Avoiding redeclaration for header to source file -
let's have 2 files foo.h , foo.cpp
foo.h
class foo { public: foo(); ~foo(); private: /* fellow member functions */ static void dothis(); /* fellow member variables */ static int x; protected: };
foo.cpp
#include "foo.h" int foo::x; void foo::dothis() { x++; }
can avoid hassle of having declare each variable in foo.cpp again? if removed line int foo::x;
linker error unresolved external symbol.
is there way of doing without having type line each variable i'm planning use?
you need re-declare static variables. if create variable in class definition without making them static, can leave them there. example:
foo.h
#ifndef _foo_h_ #define _foo_h_ class foo{ private: static int i; //static variable shared among instances int o; //non-static variable remains unique among instances public: foo(); //consructor }; #endif
foo.cpp
int foo::i = 0; //only static variables can initialized when in class //no definition required non-statics foo::foo(){ //constructor code here = 0; };
the #ifndef block prevents header accidentally beingness included multiple times same source file. in case header included in header, which, if these blocks not present, result in infinite include loop , forcefulness compiler quit when counts include depth that's high.
c++
No comments:
Post a Comment