以下の私の例では、リンカーエラーを回避するためにcppのfree関数の名前を完全に修飾する必要があるのはなぜですか?また、なしのクラス関数で機能するのはなぜですか?違いを説明できますか?
ctest.h:
namespace Test
{
int FreeFunction();
class CTest
{
public:
CTest();
~CTest();
};
}
ctest.cpp:
#include "ctest.h"
using namespace Test;
// int FreeFunction() -> undefined reference error
int Test::FreeFunction() -> works just fine
{
return 0;
}
CTest::CTest() -> no need to fully qualify name, i.e. Test::CTest
{}
CTest::~CTest()
{}
お時間を割いていただきありがとうございます。