В настоящее время я работаю над проектом 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 для решения этой проблемы?
Вы правильно создали прототип своих методов в классе, поэтому переопределение вашего класса для реализации методов неверно. Удалите дубликат класса, все, что вам нужно сделать, это определить их как таковые в вашем foo.cpp файл:
foo::foo() { .. }
foo::~foo() { .. }
void foo::test() { .. }
Других решений пока нет …