在标准项目中尝试使用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
,则会进行编译。为什么这样工作?是好的风格吗?