我该如何处理c ++中的类重定义错误?

时间:2013-05-05 15:41:14

标签: c++ header redefinition

我目前正在缺席一个c ++项目,似乎我忘记了一些允许我的代码正确编译的语法或方法。在尝试设置我的环境之后,我遇到了重新定义错误,当然,这并不意味着要通过。

编译时的错误如下

src/foo.cpp:4:7: error: redefinition of ‘class foo’
In file included from src/foo.cpp:2:0:
./headers/foo.h:7:7: error: previous definition of ‘class foo’

我不相信我正在我的空间重新定义foo;我知道这是使用我定义的foo.h头文件的结果。

以下是我正在编译的代码

// foo.h
#ifndef FOO_H
#define FOO_H

#include <iostream>

class foo {
public:
  foo();
  void test();
  ~foo();
};

#endif /* FOO_H */

// foo.cpp
#include <foo.h>

class foo {
public:
  foo(){}
  void test(){}
  ~foo(){}
};

foo::foo(){}

int foo::test(){
    std::cout << "Derp!";
    return 0;
}

foo::~foo(){}

如何设置我的标头或cpp文件以解决此问题?

1 个答案:

答案 0 :(得分:2)

您已经在类中正确构建了方法原型,因此重新定义类以实现方法是错误的。删除重复的类,您需要做的就是在 foo.cpp 文件中定义它们:

foo::foo()       { .. }
foo::~foo()      { .. }
void foo::test() { .. }