При попытке скомпилировать следующие файлы с помощью VC2013 в стандартном проекте я получаю ошибку компоновки.
A.h
namespace ns {
class A {
public:
int n_; A(int n);
friend int test_function(A C);
};
}
A.cpp
#include "A.h"
using namespace ns;
A::A(int n) { n_ = n;}
int test_function(A C) {
return C.n_;
}
main.cpp
#include "A.h"
using namespace ns;
int main(int argc, char *argv[]) {
test_function(A::A(5));
return 0;
}
Но если я изменю int test_function(A C)
на int ns::test_function(A C)
в A.cpp
, он компилируется.Почему это работает так?Это хороший стиль?