最近、クラス内でメソッドを作成する方法を学びました。メソッドを1回記述するだけで、インスタンス化するクラスごとに1つのメソッドを呼び出すことができ、それを呼び出したオブジェクトの変数でのみ機能します。 、main.cppのみを使用し、ヘッダーを使用しない場合にこれを行う方法を知っていますが、クラスヘッダーとcppを使用する場合にこれをどのように記述するかについて混乱しています。
達成したいものに似たコードのサンプルがあります。
#include <iostream>
using namespace::std;
class Object
{
public:
int stuff;
void manageStuff();
Object();
};
void Object::manageStuff()
{
stuff++;
}
Object::Object() : stuff(0) {}
Object object1, object2;
int main() {
for (int i = 0; i < 10; i++)
{
object1.manageStuff();
object2.manageStuff();
cout << object1.stuff << "\n";
cout << object2.stuff << "\n";
}
}
これは正常に機能し、Objectの2つのインスタンスと、インスタンスごとに独立して機能するメソッドを持つことができます。これが現在のプロジェクトです
。main.cpp:
#include <iostream>
#include "Test.h"
using namespace std;
int main()
{
Test test;
for (int i = 0; i < 10; i++)
{
test.count(); // Here's my error "undefined reference to Test::count"
}
return 0;
}
Test.cpp
#include <iostream>
#include "Test.h"
using namespace std;
Test::Test()
{
//ctor
}
Test::~Test()
{
//dtor
}
Test.h
#include <iostream>
#ifndef TEST_H
#define TEST_H
class Test
{
public:
Test();
virtual ~Test();
void count();
int counter();
};
#endif // TEST_H
そして最後にTestFunctions.h
#include <iostream>
#include "Test.h"
#ifndef TESTFUNCTIONS_H_INCLUDED
#define TESTFUNCTIONS_H_INCLUDED
void Test::count()
{
Test::counter++;
std::cout << Test::counter;
}
#endif // TESTFUNCTIONS_H_INCLUDED
経験豊富なプログラマーにとっては明らかに間違っていることがあると確信しており、少し太く見えようとしていますが、助けていただければ幸い
です。ありがとうございます。