我第一次尝试使用C++中的类。我的循环类和相关的头文件工作得很好,然后我移动了一些文件,从那以后一直得到一个错误,我在下面显示。
c:\circleobje.cpp(3): error C2011: 'CircleObje' : 'class' type redefinition
c:\circleobje.h(4) : see declaration of 'CircleObje'
CircleObje.h
#ifndef CircleObje_H
#define CircleObje_H
class CircleObje
{
public:
void setCol(float r, float g, float b);
void setCoord(int x, int y);
float getR();
float getG();
float getB();
int getX();
int getY();
};
#endif
CircleObje.cpp
#include "CircleObje.h"
class CircleObje {
float rVal, gVal, bVal;
int xCor, yCor;
public:
void setCol(float r, float g, float b)
{
rVal = r;
gVal = g;
bVal = b;
}
void setCoord(int x, int y)
{
xCor = x;
yCor = y;
}
...
};
我没有复制所有的.cpp函数,因为我不认为它们是相关的。这些文件在我移动文件位置之前工作没有问题。即使重命名后,我仍然有如上所述的相同错误。有什么想法来解决这个问题吗?
5条答案
按热度按时间iyfjxgzm1#
问题在于,正如编译器告诉你的那样,你定义了这个类两次,在cpp中,你应该像这样提供函数的定义:
或
因此,cpp应该如下所示:
所有的类变量都应该在类的.h文件中定义。
xriantvc2#
你已经定义了这个类两次,在头文件和cpp中,所以在.cpp中编译器会看到两个定义,删除. cpp中的类定义。
类函数应该以这种方式在cpp中实现:
考虑以下示例类:
该类在
foo.cpp
文件中实现:bqucvtff3#
你正在声明你的类多次一次在头文件和另一次在.cpp文件,这是重新定义你的类。
anhgbhbe4#
删除
class CircleObje {
,public
和结束括号};
,它应该可以工作。您已经在.H中定义了类,因此不需要在CPP中重新定义它。另外,你应该这样写你的成员实现(在CPP文件中):
tct7dpnv5#
你需要把#pragma一次在头文件的第一行然后错误将消失