读书人

请问c++ 头文件的小疑点

发布时间: 2012-06-07 15:05:14 作者: rapoo

请教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函数实现也拿出去, 虽然放这里没问题会自动内联, 但这属于运气活。

读书人网 >C++

热点推荐