代码之家  ›  专栏  ›  技术社区  ›  Sijith

返回静态变量会在Visual studio中引发错误

  •  0
  • Sijith  · 技术社区  · 5 年前

    // H File
    class LayoutManager : public QObject
    {
        static int Access_Data();
        static int data;
    };
    
    // CPP
    
    static int data= 0; // Global scope
    
    int LayoutManager::Access_Data()
    {
        data= data+ 1;
        return data;
    }
    
    Error: Error    LNK2001 unresolved external symbol "public: static int LayoutManager::data" (?mm@LayoutManager@@2HA)
    

    改为 int LayoutManager::data = 0 在C++中,错误已经消失,但在分配新值时 data

    void MyLayout::Update( void )
    {
        LayoutManager::data = 1;  // error here
    
    0 回复  |  直到 5 年前
        1
  •  1
  •   john    5 年前

    int LayoutManager::data = 0;
    

    这会告诉编译器您指的是 data 中的变量 LayoutManager 类,而不是任何类之外的常规全局变量。

    static 关键词。编译器已经从声明中知道变量是静态的。

    推荐文章