コンストラクターを宣言しても「c2512」エラーが発生しました。私のコードは次のようになっています。「first.h」ファイルで、次のように宣言しました。
class myClass
{
public:
tmpM ( cv::Mat& _model );
}
次に、「first.cpp」で次のことを行いました。
#include "first.h"
myClass::tmpM ( cv::Mat& _model )
{
...
}
次に、この「first.h」を「second.h」に含め、次にこの「second.h」を「third.h」に含め、このクラスを「third.cpp」で次のように呼び出しました。
cv::Mat myMat ( height, width, CV_8UC3 );
tmpM aM ( myMat );
しかし、これはc2512エラーを出します。
適切なデフォルトコンストラクタがありません
私は確かにこれについて検索し、デフォルトのコンストラクターを自分で作成する必要があることを発見し、「first.h」で次のようにしようとしました。
class myClass
{
public:
tmpM ( cv::Mat& _model) {};
}
次に、次のようなエラーが発生しました。
関数"myClass::tmpM"にはすでに本文があります
私はそれを行うために他のいくつかの方法を試しましたが、それでも解決できませんでした。ここでデフォルトのコンストラクターを作成する必要はないと思いますが、それでも気になります。誰かが私を助けてもらえますか?
編集
さて、あなたの提案の後、私はそれをこの形式に変更しました:
class myClass
{
public:
myClass(cv::Mat& _model ) : tmpM (_model)
{
}
private:
cv::Mat& tmpM;
};
次に、「first.cpp」で、次のようなエラーが発生しました
宣言に互換性がありません
これはどのように解決できますか?