Я новичок в C ++.Я схожу с ума по этой проблеме (я проверял и пробовал другие решения от людей, имеющих эту самую проблему с переполнением стека, но по какой-то причине я не могу решить ее).У меня есть следующие файлы -
stdafx.h
#ifndef STDAFX_H
#define STDAFX_
#endif /* STDAFX_H */
#pragma once
#include <iostream>
#include <cstdlib>
#include <cmath>
geometry.h
#ifndef GEOMETRY_H
#define GEOMETRY_H
#endif /* GEOMETRY_H */
#pragma once
double PI = 3.1415;
class Circle {
public:
double radius;
double area() const;
double circumference() const;
};
geometry.cpp
#include "geometry.h"
double Circle::area() const {
return PI*radius*radius;
}
double Circle::circumference() const {
return 2*PI*radius;
}
main.cpp
#include "stdafx.h"
#include "geometry.h"
using namespace std;
int main() {
Circle c;
c.radius = 2.0;
cout << c.area();
cout << c.circumference();
}
Я получаю ошибку -
> cd '/Users/arpanganguli/NetBeansProjects/Chapter8'
/usr/bin/make -f Makefile CONF=Debug
"/Library/Developer/CommandLineTools/usr/bin/make" -f nbproject/Makefile-
Debug.mk QMAKE= SUBPROJECTS= .build-conf
"/Library/Developer/CommandLineTools/usr/bin/make" -f nbproject/Makefile-
Debug.mk dist/Debug/GNU-MacOSX/chapter8
mkdir -p dist/Debug/GNU-MacOSX
g++ -o dist/Debug/GNU-MacOSX/chapter8 build/Debug/GNU-MacOSX/geometry.o
build/Debug/GNU-MacOSX/main.o
duplicate symbol _PI in:
build/Debug/GNU-MacOSX/geometry.o
build/Debug/GNU-MacOSX/main.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
make[2]: *** [dist/Debug/GNU-MacOSX/chapter8] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
Я не понимаю, что я делаю не так?Я использую Netbeans 10 на MacOS (если эта информация полезна).Я верю, что ошибка пытается сказать мне, что я связываю одни и те же файлы дважды, но если мне не нравятся main.cpp и geometry.cpp через geometry.h, я не смогу вызвать функцию в main.cpp.Может кто-нибудь помочь, пожалуйста?