with static methods should not warn on only private ctors
Yotam Medini
yotam@tharas.com
Tue Mar 9 11:31:00 GMT 1999
It is quite common to define a class that can be created
only via a static methods. Therefore, in the following
I think the warning should not be issued.
thanks -- yotam
emu:747>
class Single
{
public:
static Single& instance()
{
if (_p == 0) {_p = new Single;}
return *_p;
}
virtual ~Single() {}
private:
Single() : _i(0) {}
Single(const Single&); Single& operator=(Single&); // not available
static Single* _p;
int _i;
}; // Single
Single* Single::_p = 0;
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.91.60/specs
gcc version egcs-2.91.60 19981201 (egcs-1.1.1 release)
/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.91.60/cpp -lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=91 -Dsparc -Dsun -Dunix -D__svr4__ -D__SVR4 -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__sparc -D__sun -D__unix -Asystem(unix) -Asystem(svr4) -D__EXCEPTIONS -Wall -D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) s.cc /var/tmp/ccdSMBPh.ii
GNU CPP version egcs-2.91.60 19981201 (egcs-1.1.1 release) (sparc)
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include/g++
/usr/local/include
/usr/local/sparc-sun-solaris2.6/include
/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.91.60/include
/usr/include
End of search list.
/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/egcs-2.91.60/cc1plus /var/tmp/ccdSMBPh.ii -quiet -dumpbase s.cc -Wall -version -o /var/tmp/ccSJOcyu.s
GNU C++ version egcs-2.91.60 19981201 (egcs-1.1.1 release) (sparc-sun-solaris2.6) compiled by GNU C version egcs-2.91.60 19981201 (egcs-1.1.1 release).
s.cc:15: warning: `class Single' only defines private constructors and has no friends
/usr/ccs/bin/as -V -Qy -s -o s.o /var/tmp/ccSJOcyu.s
/usr/ccs/bin/as: WorkShop Compilers 4.X dev 18 Sep 1996
emu:748> cat s.cc; g++ -v; g++ -c -Wall s.cc
More information about the Gcc-bugs
mailing list