From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2725 invoked by alias); 27 Jul 2010 15:27:59 -0000 Received: (qmail 2606 invoked by uid 48); 27 Jul 2010 15:27:31 -0000 Date: Tue, 27 Jul 2010 15:27:00 -0000 Message-ID: <20100727152731.2605.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug c++/45082] Static const signed int class member causes undefined symbol. In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "rwitmer at xmission dot com" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2010-07/txt/msg02981.txt.bz2 ------- Comment #5 from rwitmer at xmission dot com 2010-07-27 15:27 ------- Thanks for all the great comments and insight. I'm still confused as to why when the BUFF_SIZE was defined as: static const signed int BUFF_SIZE = 20; it caused the error, but when it was defined as: static const unsigned int BUFF_SIZE = 20; it did not. void funky(const int& in) is an example of a library call I had to use, I have no control over the author's over zealousness on using a const int& parameter. There were 2 things that solved the problem I was seeing: 1. Adding a const signed int BUFF_SIZE; line to the .cpp file. I've seen lots of code where we define constants ala, static const int BUFF_SIZE=20; in the .hpp file without any const int myclass::BUFF_SIZE; in the .cpp files. Is that wrong to exclude them, should we be including them in the .cpp file? 2. Declaring the type during the call, ala, funky((int)myclass::BUFF_SIZE); I'm not sure which is the better solution. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45082