错误 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) { ... }
};
我是 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) { ... }
};