错误 C2011,已尝试此处提出的所有问题

Error C2011, Tried everything already asked on here

我是 Cpp 的新手,遇到这个错误:

Error   C2011   'point2d': 'struct' type redefinition

这是我第一次使用模块,header 出现错误。这是我的代码:

squarecell.cc:

#include <vector>
#include "squarecell.h"

using namespace std;

struct point2d {

    point2d(int x, int y) {
        X = x;
        Y = y;
    }
    point2d() {
        X = 0;
        Y = 0;
    }
    int X;
    int Y;
};

squarecell.h:

#pragma once

#include <iostream>
#include <vector>

using namespace std;

struct point2d {
    point2d(int x, int y);
    point2d();
    int X;
    int Y;
};

我在 header 中试过这个:

#pragma once

#include <iostream>
#include <vector>

using namespace std;

#ifndef point2d_HEADER
#define point2d_HEADER

struct point2d {
    point2d(int x, int y);
    point2d();
    int X;
    int Y;
};
#endif

也没用,我到处找,我知道我做错了,但我想不通。

如有任何帮助,我们将不胜感激,

卡尔

您多次定义结构struct point2d

最初是在header"squarecell.h"中定义的,后来至少在squarecell.cc.

模块中重新定义了

仅在header中保留结构定义,并在重新定义它的每个模块中删除结构定义。而是在需要结构定义的每个模块中包含 header。

构造函数可以在 header 中的结构定义中定义(在这种情况下,它们将是内联函数)或将它们的定义仅放在一个模块中,如

#include "squarecell.h"

point2d::point2d(int x, int y) : X( x ), Y( y ) 
{
}
point2d::point2d() : X(), Y()
{
} 

问题出在源文件中,而不是 header。

实现是这样完成的:

point2d::point2d(int x, int y) { ... }

不是这样的:

struct point2d {
    point2d(int x, int y) { ... }
};