エラーを回避する方法を教えてください。 ありがとうございます。エラー:コンストラクタの多重定義
ファイル名:point.hh
#ifndef POINT_H
#define POINT_H
class Point{
private:
int x;
int y;
public:
Point();
};
#endif
ファイル名:point.cc
#include "point.hh"
#include <iostream>
using namespace std;
Point::Point()
{
x=0;
y=0;
cout<<"x="<<x;
cout<<"y="<<y;
}
ファイル名:main.cc
#include"point.cc"
int main()
{
Point p; // calls our default constructor
}
これはコンパイラの観点からはどうですか?私はあなたがg ++ main.cc point.ccとcpp main.ccとcpp point.ccの両方でコンパイルしようとしているのは、#includesのために定義が含まれていることです。これが基本的な理由です。 –
完璧!ありがとう.. – abc
@Umut Tabak:私はあなたが正しいことを確信していませんが、はい、それが理由です。しかし、OPが 'point.cc'に対して生成されたオブジェクトファイルを追加しない場合、リンクプロセスは成功するはずです。この場合、' Point :: Point() 'の定義が1つしか見つからないからです。これはまだまだ本当におかしなことです。 – ereOn