如何从静态 class 函数初始化静态 class 对象

How to Initialize a static class object from a static class function

初始化静态成员 TestClassObject 显示错误 LNK2001: 未解析的外部符号。

    class TestClass
            {
            public:
                string sClassName;
                string sName;
                string sDescription;


            };

    class TestA
            {

            private:
                static void InitInfo();  
                static TestClass TestClassObject;
            };

    void TestA::InitInfo()
    {
        TestClassObject.sName = "Name";
        TestClassObject.sClassName = "ClassName";
        TestClassObject.sDescription = "Description of class";

    }

您必须在 class 定义之外定义静态数据成员。在 class 定义中,它仅被声明但未被定义。

例如

#include <iostream>
#include <string>

using namespace std;

class TestClass
        {
        public:
            string sClassName;
            string sName;
            string sDescription;


        };

class TestA
        {

        private:
            static TestClass InitInfo();  
            static TestClass TestClassObject;
        };

TestClass TestA::InitInfo()
{
    return { "Name", "ClassName", "Description of class" };
}    

TestClass TestA::TestClassObject = InitInfo();

int main()
{
}