пространства имен, классы и свободные функции - когда вам нужны полностью определенные имена

В моем примере ниже, почему я должен полностью уточнять имя бесплатной функции в cpp, чтобы избежать ошибок компоновщика, и почему это работает для функции класса без? Вы можете объяснить разницу?

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()
{}

Спасибо за ваше время и помощь.

8
задан nabulke 3 November 2010 в 09:09
поделиться