From 754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 7 Apr 2024 13:41:34 -0500 Subject: new repository --- devdocs/gcc~13/static-definitions.html | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 devdocs/gcc~13/static-definitions.html (limited to 'devdocs/gcc~13/static-definitions.html') diff --git a/devdocs/gcc~13/static-definitions.html b/devdocs/gcc~13/static-definitions.html new file mode 100644 index 00000000..e529ff8b --- /dev/null +++ b/devdocs/gcc~13/static-definitions.html @@ -0,0 +1,13 @@ +

14.7.1 Declare and Define Static Members

When a class has static data members, it is not enough to declare the static member; you must also define it. For example:

class Foo
+{
+  …
+  void method();
+  static int bar;
+};
+

This declaration only establishes that the class Foo has an int named Foo::bar, and a member function named Foo::method. But you still need to define both method and bar elsewhere. According to the ISO standard, you must supply an initializer in one (and only one) source file, such as:

int Foo::bar = 0;
+

Other C++ compilers may not correctly implement the standard behavior. As a result, when you switch to g++ from one of these compilers, you may discover that a program that appeared to work correctly in fact does not conform to the standard: g++ reports as undefined symbols any static data members that lack definitions.

+

+ © Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
+ https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Definitions.html +

+
-- cgit v1.2.3