c++ - 获取 Unresolved external 错误

标签 c++ class

我创建了一个类,它编译时没有语法错误,但我得到 6 个未解析的外部符号?

类(class):

struct CELL {
private:
    static bool haslife;
static int x;
static int y;
public:

    static bool has_life()
    {
        return haslife;
    }

    static void set_coords(int xcoord, int ycoord)
    {
        x = xcoord;
        y = ycoord;
    }
    static void get_coords(int &xcoord, int &ycoord)
    {
        xcoord = x;
        ycoord = y;
    }


};


class cell_grid {
private:
static int cell_size;
static int cell_count_x;
static int cell_count_y;
CELL **cell;
public:
    cell_grid();
    cell_grid(unsigned int width,unsigned int height, unsigned int cellsize)
    {

        //set size based on cellsize

        this->cell_size = cellsize;
        this->cell_count_x = floor((double)width / this->cell_size);
        this->cell_count_y = floor((double)height / this->cell_size);


        this->cell = new CELL*[this->cell_count_y];

        for(int i = 0; i < this->cell_count_y; i++)
        {
            cell[i] = new CELL[this->cell_count_x];
        }

        for(int y = 0; y < this->cell_count_y; ++y)
        {
            for(int x = 0; x < this->cell_count_x; ++x)
            {
                int cur_x = x * this->cell_size;
                int cur_y = y * this->cell_size;
                this->cell[x][y].set_coords(cur_x,cur_y);
            }
        }

    } //end of constructor

    static int get_cell_size()
    {
        return cell_size;
    }
static void render(BITMAP *buff)
{
    circlefill(buff,70,70,60,makecol(27,37,0));

}


};

主要

int main()
{
    start_allegro();
    cell_grid *grid = new cell_grid(scr_w,scr_h,10);
    grid->render(buffer);


        //Main Loop
    while (!done && !key[KEY_ESC]) //until 'X' pressed or ESC
{
//***** Start Main Code Here *****
    while (speed_counter > 0)
    {



                 //render the buffer to the screen

            blit(
            buffer,
            screen,
            0,0,0,0,
            scr_w,
            scr_h);

            clear_bitmap(buffer);

        speed_counter --;
    }
//***** End Main Code Here *****
rest(1); //Normalize cpu usage
}
    return 0;
}
END_OF_MAIN()

谢谢

最佳答案

不要将所有的类变量都定义为静态的。
当您将数据成员定义为静态时,这意味着它只有一个实例。这似乎不是您想在此处执行的操作。
而不是

private:
    static bool haslife;
    static int x;
    static int y;

写:

private:
    bool haslife;
    int x;
    int y;

另外,当你定义一个静态成员时,你需要在CPP文件中重新定义它并用一个值对其进行初始化。看起来您并没有这样做,这就是您收到链接器错误的原因。

此外,下次您发布内容时,请确保您确实提出了问题,而不仅仅是陈述事实。

关于c++ - 获取 Unresolved external 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2172293/

相关文章:

c# - 如何在 C# 中存储类列表?

c++ - LAPACKE_zheevx() 收敛失败——如何在 C++ 中使用 2*DLAMCH ('S' 增加 ABSTOL?

c++ - 使用 std::ios_base::Init 正确初始化全局变量

c++ - 从文件读入结构

c++ - 在 opengl 中渲染 obj 文件时出现黑色窗口

java - 如何从字符串中获取类型?

c++ - 通过 C++ 中的类的二维数组

Java类声明解释

c++ - 具有简单功能的 boost::asio 服务器

c# - 如何使用抽象基类继承内部类?