Могу ли я объявить extern функцию в namespace, а определить её в классе?

Могу ли я объявить extern функцию в namespace, а определить уже в классе?

namespace emmc {
    extern void proot(string dir);
}

class Main {
    private:
        void emmc::proot(string dir) {
        .....
        }
};

Если нет, то есть ли способ реализовать нечто подобное?

UPD: вот минимально компилируемый пример:

#include <iostream>
using namespace std;

namespace emmc {
    extern void start();
}

class Kernel {
    private:
        void emmc::start() {
            cout << "It works!" << endl;
        }
    public:
        void init() {
            emmc::start();
        }
};

int main() {
     Kernel kernel;
     kernel.init();
     return 0;
}

Но вот что пишет g++:

 ~ # g++ test.cpp
test.cpp:10:14: error: invalid use of ‘::’
   10 |         void emmc::start() {
      |              ^~~~

Ответы (0 шт):