0

したがって、実際に1つのプログラムをヘッダーと2つの.cppファイルに分割したのはこれが初めてです。しかし、リンケージエラーが発生していると思います。ディレクトリの外観は次のとおりです。(ここに私の画像へのリンクがあります私は質問に画像を投稿するのに十分な担当者がいません)

main.cppは、すべての呼び出し関数やその他の重要なものが入るメインのソースファイルです。関数.cppにはすべての関数があり、coordin.hファイルには関数のプロトタイプと構造体および定数があります。すべてが大丈夫です。タイプミスはありません。私はすべてをチェックしました。しかし、関数エラーへの未定義の参照を取得しています。coordin.hファイルも含めました。関数.cppファイルは別の場所に移動する必要があると思いますか?つまり、コンパイラはそのファイルの内部を調べていませんか?

彼女のコード:

main.cpp

#include <iostream>
#include "coordin.h"

using namespace std;

int main()
{
    rect rplace ;
    polar pplace;

    rect test = {45.89,25.4};
    pplace = rect_to_polar(test);

    cout<<pplace.angle<<endl;


    return 0;
}

coordin.h

#ifndef COORDIN_H_INCLUDED
#define COORDIN_H_INCLUDED 


/* Constants */

const double RAD_TO_DEG = 57.29577951;

struct polar{
    double distance; //distance from the origin
    double angle; //the angle from the origin
};

struct rect {
    double x; //horizontal distance form the origin
    double y; //vertical distance from the origin
};

/* Function prototypes */

polar rect_to_polar(rect xypos);
void show_polar(polar dapos);

#endif // COORDIN_H_INCLUDED

関数.cpp

/*
    functions.cpp
    contains all the function declarations
*/

#include <iostream>
#include "coordin.h" 
#include <cmath>

using namespace std;

//convert rectangular to polar coordinates
polar rect_to_polar(rect xypos){

    polar answer;

    answer.distance =
        sqrt(xypos.x * xypos.x + xypos.y * xypos.y);
    answer.angle = atan2(xypos.y, xypos.x);

    return answer;
}

//show polar coordinate, converting angle to degrees

void show_polar(polar dapos){

    cout<<"Distance : " << dapos.distance <<endl;
    cout<<"Angle    : " << dapos.angle * RAD_TO_DEG <<" degrees."<<endl;
}

ここにエラーがあります:

4

1 に答える 1

1

Code :: Blocksは実際にfunctions.cppファイルをコンパイルしますか?プロジェクトツリーを右クリックfunctions.cppし、[プロパティ]を選択して、[ビルド]、[リリース]のチェックボックスが設定されていることを確認します。設定されていない場合、Code :: Blockはビルド中にこのファイルを無視し、コンパイルしません。

于 2012-11-19T14:46:49.267 に答える