class_one.h:
#ifndef CLASS_ONE
#define CLASS_ONE
#include <string>
namespace ones{
typedef enum{BLACK, WHITE, RED} b_color;
typedef char b_letter;
const b_letter letters[4] = {'A', 'B', 'C', 'D'};
class one{
b_color color;
b_letter letter;
public:
one(b_color, b_letter);
std::string combo();
b_color getColor();
b_letter getLetter();
};
}
#endif
このヘッダーファイルがある場合、.cppファイルを作成するにはどうすればよいですか。次に、このクラスを別のファイルmain.cppでインスタンス化するにはどうすればよいですか。私はこのようなことを考えるでしょう:
class_one.cpp
#include <iostream>
#include "class_one.h"
using namespace ones;
class one
{
b_color color;
b_letter letter;
public:
one(b_color c, b_letter l) //Not sure about this one..
{
color = c;
letter = l;
}
std::string combo()
{
return "blahblah temporary. letter: " + letter; //not finished
}
b_color getColor()
{
return color;
}
b_letter getLetter()
{
return letter;
}
};
そしてそれをインスタンス化するために、私は次のようなことをします:
main.cpp
#include "class_one.h"
int main()
{
ones::one test(ones::BLACK, ones::letters[0]);
//cout<<test.name()<<endl;
return 0;
}
すべてがファイルのより大きなクラスターから抽出されますが、これは私の質問の本質です。ヘッダーファイルは正しいはずですが、そのコンストラクターではなく、「one」クラスをインスタンス化する方法がわかりません。.cppで定義したコンストラクターが間違っていると思います。私はJavaに慣れているので、コンストラクターでさえも、ヘッダーファイルにあるようなコンストラクターを見たことがありません。method(int, int)
私には、これまでのように見えmethod(int a, int b)
ます。これを実行すると、次のエラーが発生します。
main.obj : error LNK2019: unresolved external symbol "public: __thiscall ones::one::one(enum ones::b_color, char)" (??0one@ones@@QAE@W4b_color@1@D@Z) referenced in function _main
<path>/project.exe : fatal error LNK1120: 1 unresolved externals
私がここに持っている信じられないほど愚かな命名について申し訳ありませんが、それは目的のために理にかなっています。私が今これのほとんどを手で書いたので、質問コードのいくつかのタイプミスかもしれません。助けていただければ幸いです。