c++ - 如何从静态类函数初始化静态类对象

标签 c++ class static initialization static-methods

初始化静态成员 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";

    }

最佳答案

您必须在类定义之外定义静态数据成员。在类定义中它只是被声明而没有被定义。

例如

#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()
{
}

关于c++ - 如何从静态类函数初始化静态类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58932973/

相关文章:

c++ - 按节点计算单链表中的出现次数

c++ - 给一个类访问另一个 C++

java - 即使我将 1 个数组的值存储到另一个数组中并将它们作为一个整体打印,但数组仍然打印最后一个值

C++:静态库和动态库(编译运行)

c# - 对 DLL 入口点感到困惑(入口点未找到异常)

c++ - 转换到子对象进行测试 - 此代码是否符合标准?

java - f# 公共(public)类中的私有(private)类

class - Grails 域类可以从不是域类的类继承吗?

c++ - 我在哪里将常量字符串放在 C++ : static class members or anonymous namespaces? 中

c++ - VS 15 社区无法创建 C++ 项目