我不知道如何在不创建此类的对象的情况下初始化静态类成员。
这是我的代码:

namespace {

    class CPassant : public thread
    {
        private:
            static unsigned LastID;

        public:
            CPassant (unsigned pDelaiArr = 0, unsigned pDelaiDep = 0)
            {
              (blabla)
            }

            static void setLastID (unsigned Valeur)
            {
                LastID = Valeur;
                    /* error : undefined reference to `(anonymous
                        namespace)::CPassant::LastID' */

            } // setLastID ()

        }; // class CPassant

} // anonym namespace

int main ()
{
    CPassant::CPassant ().setLastID(0);
    //  doesn't work too:
// unsigned CPassant::LastID = 0;

    return 0;
}

谢谢

注意:我已经看过这些答案,但是没有一个起作用:

stackoverflow.com/ initialize-a-static-member-an-array-in-c

stackoverflow.com/ how-to-initialize-a-static-member

最佳答案

在您的cpp文件中执行此操作:

unsigned CPassant::LastID = 0;

这称为定义静态类成员,如果不这样做,最终将导致链接器错误。您只是声明了静态成员,但未定义它。

请注意,在定义静态成员时,访问说明符在这里无关紧要。

10-07 16:17