---
name: "sc_ClassDesc"
section: "3"
platform: "linux"
package: "libsc-doc"
version: "2.3.1-22"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/sc_ClassDesc"
---

# sc\_ClassDesc(3)

This class is used to contain information about classes.

## NAME

sc::ClassDesc - This class is used to contain information about classes.

## SYNOPSIS

`#include <class.h>`

Inherits **sc::Identity**.

### Public Member Functions

**ClassDesc** (const std::type\_info &, const char \*, int=1, const char \*p=0, **DescribedClass** \*(\*ctor)()=0, **DescribedClass** \*(\*keyvalctor)(const **Ref**\< **KeyVal** \> &)=0, **DescribedClass** \*(\*stateinctor)(**StateIn** &)=0)\
 const **ParentClasses** & **parents** () const\
 const char \* **name** () const\
 Returns the name of the class.  int **version** () const\
 Returns the version number of the class.  **DescribedClass** \* **create\_described\_class** () const\
 This member has been replaced by **create()**.  virtual **DescribedClass** \* **create** () const\
 Create an instance of **DescribedClass** with exact type equal to the class to which this class descriptor belongs.  virtual **DescribedClass** \* **create** (const **Ref**\< **KeyVal** \> &) const\
 Create an instance of **DescribedClass** with exact type equal to the class to which this class descriptor belongs.  virtual **DescribedClass** \* **create** (**StateIn** &) const\
 Create an instance of **DescribedClass** with exact type equal to the class to which this class descriptor belongs.

### Static Public Member Functions

static std::map\< std::string, **ClassDescP** \> & **all** ()\
 static void **list\_all\_classes** ()\
 Writes a list of all of the classes to **ExEnv::out0()**.  static **ClassDesc** \* **name\_to\_class\_desc** (const char \*)\
 Given the name of the class, return a pointer to the class descriptor.  static **ClassDesc** \* **class\_desc** (const std::type\_info &)\
 Given a type\_info object return a pointer to the **ClassDesc**.  static int **load\_class** (const char \*classname)\
 Attempt to dynamically load the shared object file for classname.

### Friends

class **ParentClasses**\

## Detailed Description

This class is used to contain information about classes.

Each **DescribedClass** type has a static **ClassDesc** member. This member has lists of the parents, children and virtual parents for each class. The **ClassDesc** class also has a static member that is a list of all described classes in the system. These lists are constructed as the constructors for the static **ClassDesc** members for each class are called and are completed before main is entered. See **class** for more information.

## Member Function Documentation

### virtual DescribedClass \* sc::ClassDesc::create () const` [virtual]`

Create an instance of **DescribedClass** with exact type equal to the class to which this class descriptor belongs. The constructor which takes no arguments is used. If this constructor doesn't exist or a static function that calls it with new wasn't given to this **ClassDesc** when it was created, then 0 will be returned.

### virtual DescribedClass \* sc::ClassDesc::create (const Ref\< KeyVal \> &) const` [virtual]`

Create an instance of **DescribedClass** with exact type equal to the class to which this class descriptor belongs. The **KeyVal**& constructor is used. If this constructor doesn't exist or a static function that calls it with new wasn't passed to this **ClassDesc**, then 0 will be returned.

### virtual DescribedClass \* sc::ClassDesc::create (StateIn &) const` [virtual]`

Create an instance of **DescribedClass** with exact type equal to the class to which this class descriptor belongs. The **StateIn**& constructor is used. If this constructor doesn't exist or a static function that calls it with new wasn't passed to this **ClassDesc**, then 0 will be returned.

## Author

Generated automatically by Doxygen for MPQC from the source code.
