【问题标题】:Compare static and non-static integer in non-static function [closed]比较非静态函数中的静态和非静态整数[关闭]
【发布时间】:2012-03-29 15:18:02
【问题描述】:

我有一个用作计数器的静态变量和一个用于在某些事件中保存计数器值的变量的非静态版本。这是一些代码:

标题:

static int UndoID;
int UndoRedoID;

void SetUnsavedChanges();

类:

在课堂的各个部分我尝试这样的事情:

UndoRedoID = UndoID;

我尝试过其他方法,例如:

UndoRedoID = myClass:UndoID;

示例对比:

void myClass::SetUnsavedChanges()
{
    if (UndoRedoID != UndoID)
    {
        cout << "Unsaved";
    }
    else
    {
        cout << "Saved";
    }
}

这会导致我收到如下链接错误:

Undefined symbols:
  "myClass::UndoID", referenced from:
    myClass::SetUnsavedChanges()       in myClass_lib.a(myClass.o)
    ...

感谢您的帮助:)

【问题讨论】:

    标签: c++ static linker comparison non-static


    【解决方案1】:

    你需要定义类外的静态成员数据为:

    //this should be done in .cpp file
    int myClass::UndoID;
    

    让我再举一个例子:

    //X.h
    class X
    {
       static int s; //declaration of static member
    };
    

    然后在X.cpp 文件中,你应该这样做:

    //X.cpp
    #include "X.h"
    
    int X::s; //definition of the static member
    

    【讨论】:

    • 一些初始化也是个好主意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 2011-05-20
    相关资源
    最近更新 更多