请教c++ 头文件的小问题
#ifndef _TEST_H_
#define _TEST_H_
#include <string>
using namespace std;
namespace testns
{
int n = 3;
class bank
{
public string name;
public bank(strin aName)
{
cout << "call default constructor";
name = aName;
}
}
}
#endif
以上为testh.h文件中的全部内容。
请教各位,测试头文件使用,在testhmain.cpp文件中#include "testh.h",DEV环境。
头文件中未添加红色代码部分(class bank部分)之前,一切编译运行正常。当添加红色代码部分,编译报错:In file included from testhmain.cpp 。请问,这是什么原因造成的?谢谢
[解决办法]
int n = 3;
定义不要放头文件里,放到cpp里。
#ifndef _TEST_H_
#define _TEST_H_
#include <string>
using namespace std;
namespace testns
{
extern int n;
class bank
{
public string name;
public bank(strin aName)
{
cout << "call default constructor";
name = aName;
}
}
}
.cpp
#include "test.h"
int testns::n = 3;
[解决办法]
class bank
{
public string name;
public bank(strin aName)
{
cout << "call default constructor";
name = aName;
}
}
}
这个里面的bank函数实现也拿出去, 虽然放这里没问题会自动内联, 但这属于运气活。