You probably forward declared a class somewhere to avoid having to include another header file and now you're trying to use the class you've forward declared still without including the header file. For example: Header.h: class YourClass; class MyClass { private: YourClass* p; public: YourClass* GetP() {return p}; }; Source.cpp: #include "Header.h" int main() { MyClass m; YourClass *p = m.GetP(); p->DoSomething(); <---- This will generate that error Thanks, Lyle -----Original Message----- From: gcc-help-owner@xxxxxxxxxxx [mailto:gcc-help-owner@xxxxxxxxxxx] On Behalf Of Stephen torri Sent: Wednesday, January 26, 2005 7:15 PM To: gcc help Subject: Method for finding reason behind "error: `obj' has incomplete type" Is there a way to figure out what is causing me to get an error message that says: "error: `obj' has incomplete type" The full error message is: ../../src/data_source/File_Data_Transfer_T.cpp: In member function `const typename Data_Type::ptr kurt::data_source::File_Data_Transfer<Data_Type>::get() [with Data_Type = kurt::data_types::Group_Seq]': Event_Filter.cpp:314: instantiated from here ../../src/data_source/File_Data_Transfer_T.cpp:78: error: `obj' has incomplete type ../../src/data_source/File_Data_Transfer_T.cpp:78: error: storage size of `obj' isn't known Line 314 in Event_Filter.cpp is the end of the namespace containing the defintions for Event_Filter class. Line 78 of File_Data_Transfer_T.cpp is the place where I try to use a typename: typename Data_Type::worker_type obj (new Data_Type()); Is there a compiler flag that I should use? Here are the flags I am using: g++ -DHAVE_CONFIG_H -I. -I. -I../../src -march=pentium3 -Wpointer-arith -gdwarf-2 -g3 -O0 -W -Wall -fno-inline -ftemplate-depth-120 -c Event_Filter.cpp -MT Event_Filter.lo -MD -MP -MF .deps/Event_Filter.TPlo -fPIC -DPIC -o .libs/Event_Filter.o Stephen