---
name: "SoSField"
section: "3"
platform: "linux"
package: "coin"
version: "1:4.0.10-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/SoSField"
---

# SoSField(3)

The SoSField class is the base class for fields which contains only a single value.

## NAME

SoSField - The **SoSField** class is the base class for fields which contains only a single value.

## SYNOPSIS

\#include \<Inventor/fields/SoSField.h\>

Inherits **SoField**.

Inherited by **SoSFBool**, **SoSFBox2d**, **SoSFBox2f**, **SoSFBox2i32**, **SoSFBox2s**, **SoSFBox3d**, **SoSFBox3f**, **SoSFBox3i32**, **SoSFBox3s**, **SoSFColor**, **SoSFColorRGBA**, **SoSFDouble**, **SoSFEngine**, **SoSFEnum**, **SoSFFloat**, **SoSFImage**, **SoSFImage3**, **SoSFInt32**, **SoSFMatrix**, **SoSFName**, **SoSFNode**, **SoSFPath**, **SoSFPlane**, **SoSFRotation**, **SoSFShort**, **SoSFString**, **SoSFTime**, **SoSFTrigger**, **SoSFUInt32**, **SoSFUShort**, **SoSFVec2b**, **SoSFVec2d**, **SoSFVec2f**, **SoSFVec2i32**, **SoSFVec2s**, **SoSFVec3b**, **SoSFVec3d**, **SoSFVec3f**, **SoSFVec3i32**, **SoSFVec3s**, **SoSFVec4b**, **SoSFVec4d**, **SoSFVec4f**, **SoSFVec4i32**, **SoSFVec4s**, **SoSFVec4ub**, **SoSFVec4ui32**, and **SoSFVec4us**.

### Public Member Functions

virtual **~SoSField** ()\

Public Member Functions inherited from **SoField** virtual **~SoField** ()\
 void **setIgnored** (SbBool ignore)\
 SbBool **isIgnored** (void) const\
 void **setDefault** (SbBool defaultVal)\
 SbBool **isDefault** (void) const\
 virtual **SoType** **getTypeId** (void) const =0\
 SbBool **isOfType** (const **SoType** type) const\
 void **enableConnection** (SbBool flag)\
 SbBool **isConnectionEnabled** (void) const\
 SbBool **connectFrom** (**SoEngineOutput** \*master, SbBool notnotify=FALSE, SbBool append=FALSE)\
 SbBool **appendConnection** (**SoEngineOutput** \*master, SbBool notnotify=FALSE)\
 void **disconnect** (**SoEngineOutput** \*engineoutput)\
 SbBool **isConnectedFromEngine** (void) const\
 SbBool **getConnectedEngine** (**SoEngineOutput** \*&master) const\
 SbBool **connectFrom** (**SoField** \*master, SbBool notnotify=FALSE, SbBool append=FALSE)\
 SbBool **appendConnection** (**SoField** \*master, SbBool notnotify=FALSE)\
 void **disconnect** (**SoField** \*field)\
 SbBool **isConnectedFromField** (void) const\
 SbBool **getConnectedField** (**SoField** \*&master) const\
 int **getNumConnections** (void) const\
 int **getForwardConnections** (**SoFieldList** &slavelist) const\
 int **getConnections** (**SoFieldList** &masterlist) const\
 void **disconnect** (void)\
 SbBool **isConnected** (void) const\
 void **setContainer** (**SoFieldContainer** \*cont)\
 **SoFieldContainer** \* **getContainer** (void) const\
 SbBool **set** (const char \*valuestring)\
 void **get** (**SbString** &valuestring)\
 SbBool **shouldWrite** (void) const\
 virtual void **touch** (void)\
 virtual void **startNotify** (void)\
 virtual void **notify** (**SoNotList** \*nlist)\
 SbBool **enableNotify** (SbBool on)\
 SbBool **isNotifyEnabled** (void) const\
 void **addAuditor** (void \*f, **SoNotRec::Type** type)\
 void **removeAuditor** (void \*f, **SoNotRec::Type** type)\
 int **operator==** (const **SoField** &f) const\
 int **operator!=** (const **SoField** &f) const\
 virtual void **connectionStatusChanged** (int numconnections)\
 SbBool **isReadOnly** (void) const\
 virtual SbBool **isSame** (const **SoField** &f) const =0\
 virtual void **copyFrom** (const **SoField** &f)=0\
 virtual void **fixCopy** (SbBool copyconnections)\
 virtual SbBool **referencesCopy** (void) const\
 void **copyConnection** (const **SoField** \*fromfield)\
 virtual SbBool **read** (**SoInput** \*input, const **SbName** &name)\
 virtual void **write** (**SoOutput** \*out, const **SbName** &name) const\
 virtual void **countWriteRefs** (**SoOutput** \*out) const\
 void **setFieldType** (int type)\
 int **getFieldType** (void) const\
 SbBool **getDirty** (void) const\
 void **setDirty** (SbBool dirty)\
 void **evaluate** (void) const\

### Static Public Member Functions

static void **initClass** (void)\
 static **SoType** **getClassTypeId** (void)\
 static void **atexit\_cleanup** (void)\

Static Public Member Functions inherited from **SoField** static void **initClass** (void)\
 static void **initClasses** (void)\
 static void **cleanupClass** (void)\
 static **SoType** **getClassTypeId** (void)\

### Protected Member Functions

**SoSField** (void)\

Protected Member Functions inherited from **SoField** **SoField** (void)\
 void **valueChanged** (SbBool resetdefault=TRUE)\
 virtual void **evaluateConnection** (void) const\
 virtual SbBool **readValue** (**SoInput** \*in)=0\
 virtual void **writeValue** (**SoOutput** \*out) const =0\
 virtual SbBool **readConnection** (**SoInput** \*in)\
 virtual void **writeConnection** (**SoOutput** \*out) const\
 SbBool **isDestructing** (void) const\
 virtual **SoNotRec** **createNotRec** (**SoBase** \*cont)\

### Additional Inherited Members

Public Types inherited from **SoField** enum **FieldType** { **NORMAL\_FIELD** = 0, **EVENTIN\_FIELD**, **EVENTOUT\_FIELD**, **EXPOSED\_FIELD** }\

## Detailed Description

The **SoSField** class is the base class for fields which contains only a single value.

All field types which should always contain only a single member value inherits this class. **SoSField** is an abstract class.

You use methods setValue() and getValue() to store or fetch the value of single-value fields. Example:

```
SoSpotLight * lightnode = new SoSpotLight;
lightnode->on.setValue(TRUE); // The "on" field of SoSpotLight is
                              // a single value field of type SoSFBool.
...
...
// Change lightswitch.
if (lightnode->on.getValue() == FALSE)
  lightnode->on = TRUE; // We can use operator = instead of setValue().
else
  lightnode->on = FALSE;
...
```

When nodes, engines or other types of field containers are written to file, their single-value fields are written to file in this format:

```
containerclass {
  fieldname value
  fieldname value
  ...
}
```

..like this, for instance, a SpotLight node from a scene graph which will be default *off* when read back from file:

```
SpotLight {
  on FALSE
}
```

**See also**

**SoMField**

## Constructor & Destructor Documentation

### SoSField::~SoSField () \[virtual\]

The **SoSField** destructor is empty, and is only defined so we could make it virtual.

### SoSField::SoSField (void ) \[protected\]

The **SoSField** constructor is protected, as this is an abstract class.

## Member Function Documentation

### void SoSField::initClass (void ) \[static\]

Internal method called upon initialization of the library (from **SoDB::init()**) to set up the type system.

### SoType SoSField::getClassTypeId (void ) \[static\]

Returns a unique type identifier for this field class.

**See also**

**getTypeId()**, **SoType**

## Author

Generated automatically by Doxygen for Coin from the source code.
