2

私は少し初心者で、物事のコツをつかみ始めていますが、この男のためにこの計算機に別の部分を追加しています。

私はこれを持っていますmain.cpp、私はのためのビットを追加しましたselection == 5

#include <iostream>
#include <string.h>

using namespace std;

// Function includes
// I try to keep them in the order they appear in the
// output below for organization purposes
#include "calc.m.xy12plugin.cpp"
#include "calc.b.xymplugin.cpp"
#include "calc.m.xybplugin.cpp"
#include "calc.point.xymplugin.cpp"
#include "calc.parallelplugin.cpp"

// The above one would be here, too

int main(int argc, const char* argv[]) {
int i;
i = 0;
cout << "Linear Equation Calculator" << endl << "Copyright (c) 2011 Patrick Devaney" << endl
<< "Licensed under the Apache License Version 2" << endl;
// This loop makes the code a bit messy,
// but it's worth it so the program doesn't
// crash if one enters random crap such as
// "zrgxvd" or "54336564358"
while(i < 1) {
cout << "Type:" << endl
<< "0 to calculate a slope (the M value) based on two points on a line" << endl
<< "1 to calculate the Y-intercept (the B value) based on two points and a slope" << endl
<< "2 to calculate the slope (the M value) based on the Y-intercept and X and Y" << endl <<
"plug-ins" << endl
<< "3 to find the next point up or down a line based on the slope (M) and X and Y"
<< endl << "plug-ins" << endl
<< "4 to find a point x positions down the line based on the slope (M) and X and Y"
<< endl << "plug-ins" << endl
<< "5 to find the equation of a parallel line in form y=mx+c"
<< endl << "plug-ins" << endl;

string selection;
cin >> selection;
if(selection == "0") {
mcalcxyplugin();
i++;
}
else if(selection == "1") {
calcbxymplugin();
i++;
}
else if(selection == "2") {
calcmxybplugin();
i++;
}
else if(selection == "3") {
calcpointxymplugin(1);
i++;
}
else if(selection == "4") {
int a;
cout << "How many points up/down the line do you want? (Positive number for points" << endl
<< "further up, negative for previous points" << endl;
cin >> a;
calcpointxymplugin(a);
i++;
}
else if(selection == "5"){
calcparallelplugin();
i++;
}
else {
i = 0;
}
// End of that loop below
}
return 0;
}

次に、このファイルを作成し、リンクしました。else if(selection == "5"...

これはcal.parallelplugin.cppファイルです

#include <iostream>
using namespace std;


int main(){
cout <<"Welcome to the Parallel Line Calculator \n" << endl;
cout << "Here you will find the equation of the line parallel to a line passing through \na point (x,y) in the form y=mx+c \n\n" << endl;

float x,y, c, x1, y1, gradient, c1;

 cout << "NOTE: Equation must be in form y=mx+c \n" << endl;
 cout <<"Please enter the number of Xs:" <<endl;
 cin >> x;
 cout <<"Please enter the number of Ys:" <<endl;
 cin >> y;
 cout <<"Please enter the number of Cs:" <<endl;
 cin >> c;
 cout <<"Please enter the x co-ordinate:" <<endl;
 cin >> x1;
 cout <<"Please enter the y co-ordinate:" <<endl;
 cin >> y1;

gradient= x/y;
c1 = y1 + (gradient*x1);

 cout << "Equation of parallel line through (" << x1 << ", " << y1 << ") is " << "y=" << gradient << "x+" << c1 << endl;

}

これをコンパイルしてもエラーは発生しませんが、main.cppをコンパイルすると、次のエラーが発生し、何が問題なのかを解決するために一生を費やすことができません:(

C:\Users\George\Desktop\linear_equation_calc\main.cpp||In function 'int main(int, const char**)':|
C:\Users\George\Desktop\linear_equation_calc\main.cpp|51|error: declaration of C function 'int main(int, const char**)' conflicts with|
C:\Users\George\Desktop\linear_equation_calc\calc.parallelplugin.cpp|9|error: previous declaration 'int main()' here|
C:\Users\George\Desktop\linear_equation_calc\main.cpp||In function 'int main(int, const char**)':|
C:\Users\George\Desktop\linear_equation_calc\main.cpp|100|error: 'calcparallelplugin' was not declared in this scope|
||=== Build finished: 3 errors, 0 warnings ===|

ヘルプ!

4

2 に答える 2

5

あなたには2つのmain機能があります。機能は 1 つだけにする必要がありmainます。

于 2012-04-29T21:05:50.043 に答える
3

main2つの機能があるという事実に加えて、

C++ で複数のファイルを使用する方法を誤解していると思います。コンパイル中に、1 つの .cpp ファイルが別の .cpp の内容を認識してはなりません。

.cpp ファイルで関数 (またはクラスなど) を定義できますが、これを .h (または .hpp/.hh) ファイルでも宣言する必要があり、それを別のファイルで参照するために使用します。

たとえば、int Test()Utils.cpp というファイルで呼び出される関数があるとします。ファイルでこれを使用するmain.cppには、次の行に沿って something という名前のファイルを作成する必要がありますUtils.h(実際の名前は無関係ですが、理解できるものが必要です)。内部Utils.hには、次のようなものを配置する必要があります。

#pragma once

int Test();

このファイルは、 Test という関数がプログラムのどこかで宣言されていることをコンパイラに伝え、それが存在するという事実を受け入れ、コンパイルを進めます (これらの問題を解決するのは、コンパイラではなくリンカの仕事です)。

次に、main.cpp ファイルにUtils.h. .cpp ファイルを含めることはできますが、コンパイル時間、オブジェクト ファイルのサイズが増加し、何かが 2 回解析されるとリンカーの問題が発生する可能性があるため、一般的には悪い考えと見なされます (最後の点についてはよくわかりません)。

于 2012-04-29T21:13:16.430 に答える