C++ 'class' 类型重定义

标签 c++ class

我第一次尝试使用 C++ 中的类。我的 circle 类和关联的头文件工作正常,然后我移动了一些文件,从那以后一直收到错误,我在下面显示了错误。

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 函数,因为我认为它们不相关。在我移动文件位置之前,这些文件可以正常工作。即使在重命名它们之后,我仍然有与上述相同的错误。有解决问题的想法吗?

最佳答案

问题是您定义了两次类,就像编译器告诉您的那样。在 cpp 中,您应该像这样提供函数的定义:

MyClass::MyClass() {
  //my constructor
}

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

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

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

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

...

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

关于C++ 'class' 类型重定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21354132/

相关文章:

c++ - Qt:更改 centralWidget 时崩溃

Python在读取文件时创建对象

C++ 位运算 : How to decode/decompress char to int, 并显示正确的字符串?

c++ - 我是否应该将所有数据类实现为 QSharedData 并将其与 QSharedDataPointer 一起使用?

c++ - 为什么 Visual C++ 接口(interface)不能包含运算符?

c++ - 为什么 "make distcheck"在这个非常基本的 "Hello, World!"自动工具示例中失败?

C++ 每个类方法在一个单独的文件中?

c++ - 在 C++ 中编写函数指针的 setter 和 getter

java - 我需要将信息传递给一个类,然后返回到Java中的主类

c# - 从 Collection 类中提取数据