2017-01-20 19 views
-5

"プログラミングプログラミングの初歩C++"という本を読んでいます。私はこの提供されたスクリプトを完全に入力しました(オンラインダウンロードから提供されたスクリプトを貼り付けて、すべての文字を比較するために元に戻す/やり直しを使用して、行末と実際に関数名の最初の文字を大文字にする以外は差異を見つけませんでした)。変更はありませんが、付属のスクリプトは完璧にコンパイルされますが、私は(スクリプトをコピー/貼り付けない限り)私はしません。私は2番目の関数のエラーを与えています:GoodSwap()"関数型のint型とint型の無効なオペランド" book from

#include<iostream> 
using namespace std; 

void BadSwap(int x, int y); 
void GoodSwap(int* const pX, int* const pY); 

int main(){ 
    int myScore = 150; 
    int yourScore = 1000; 
    cout << "Original Values" << endl; 
    cout << "myScore : " << myScore << endl; 
    cout << "yourScore: " << yourScore << endl; 

    cout << "Calling BadSwap()" << endl; 
    BadSwap(myScore, yourScore); 
    cout << "myScore : " << myScore << endl; 
    cout << "yourScore: " << yourScore << endl; 

    cout << "Calling GoodSwap()" << endl; 
    GoodSwap(&myScore, &yourScore); 
    cout << "myScore : " << myScore << endl; 
    cout << "yourScore: " << yourScore << endl; 

    return 0; 
} 

void BadSwap(int x, int y){ 
    int temp = x; 
    x = y; 
    y = temp; 
} 

void GoodSwap(int* const pX, int* const pY){ 
    int temp = *pX 
    *pX = *pY; 
    *pY = temp; 
} 
+1

いいえ、C++プログラムはスクリプトではありません。いいえ、「GoodSwap」は非常に悪いです。エラーメッセージは非常にリテラルです。 –

+0

「良い」とは、*動作することを意味します。 :-) –

+0

'int temp = * pX'とにかく、C++の本が掲載されています[ここ](http://stackoverflow.com/q/388242/4115625) – Danh

答えて

-1

あなたはGoodSwap()の最初の行で;を逃しました。

int temp = *pX // There should be a `;` 

この変更の後、プログラムはVS2015でコンパイルできます。

+0

ありがとうございます。私はPythonを使って2年後にPythonから来ました。これらの ';'見えない半分の時間をまだ見てください。私は応答を+1しましたが、私はあまり評判がありません。私はNotepad ++ w/gccコンパイラを使用しました。 –

+0

'gcc'でもこれをコンパイルできます。コマンド' gcc -lstdC++ yourCppFileName.cpp'を使用してください。 C++プログラムをコンパイルするより良い方法は、 'g ++'を使うことです。自動的にC++ランタイムライブラリにリンクします。 'g ++'コマンドは 'g ++ yourCppFileName.cpp'と同じようになります。 –

+0

これまで私が使ってきた基本的な構造は、 "g ++ -o main main.cpp" –

関連する問題