0

缺席后,我目前正在从事一个 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 文件来解决这个问题?

4

1 回答 1

2

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

foo::foo()       { .. }
foo::~foo()      { .. }
void foo::test() { .. }
于 2013-05-05T15:42:48.423 回答