加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C’类’类型重新定义

发布时间:2020-12-16 03:46:27 所属栏目:百科 来源:网络整理
导读:我第一次尝试使用c语言中的类.我的圈子类和相关的头文件工作正常,然后我移动了一些文件,然后继续得到我在下面显示的错误. c:circleobje.cpp(3): error C2011: 'CircleObje' : 'class' type redefinitionc:circleobje.h(4) : see declaration of 'CircleObj
我第一次尝试使用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 b)
{
    rVal = r;
    gVal = g;
    bVal = b;
}

void setCoord(int x,int y)
{
    xCor = x;
    yCor = y;
}

...
};

我没有复制所有.cpp函数,因为我认为它们不相关.在移动文件位置之前,这些文件没有问题.即使重命名后我仍然有与上面相同的错误.有什么想法来解决这个问题吗?

解决方法

问题是你正在编译器告诉你两次定义类.在cpp中,您应该提供函数的定义,如下所示:
MyClass::MyClass() {
  //my constructor
}

要么

void MyClass::foo() {
   //foos implementation
}

所以你的cpp应该是这样的:

void CirleObje::setCol(float r,float b)
{
    rVal = r;
    gVal = g;
    bVal = b;
}

void CircleObje::setCoord(int x,int y)
{
    xCor = x;
    yCor = y;
}

...

并且所有类变量都应该在类的.h文件中定义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读