我有这个样子如何在C++源文件中不使用类名称空间前缀?
#ifndef NORMALCLIENT_H
#define NORMALCLIENT_H
#include <ClientType.h>
class NormalClient : public ClientType {
public:
NormalClient();
NormalClient(const NormalClient& orig);
double getDiscount();
int getMaxRents();
virtual ~NormalClient();
private:
};
#endif /* NORMALCLIENT_H */
和源文件我的头文件:
#include "NormalClient.h"
NormalClient::NormalClient() {
}
NormalClient::NormalClient(const NormalClient& orig) {
}
NormalClient::~NormalClient() {
}
不是有重复的源文件NormalClient::
的一种方式? 我想:
#include "NormalClient.h"
using namespace NormalClient
NormalClient() {
}
NormalClient(const NormalClient& orig) {
}
~NormalClient() {
}
但它在编译过程中给我的错误:
/home/grayrattus/projekt/trunk/trunk/biblioteka/src/model/client_types/NormalClient.cpp:3:17: error: ‘NormalClient’ is not a namespace-name
using namespace NormalClient
^
/home/grayrattus/projekt/trunk/trunk/biblioteka/src/model/client_types/NormalClient.cpp:5:1: error: expected namespace-name before ‘NormalClient’
NormalClient() {
^
我不明白为什么编译器为命名空间的错误,当我之前定义它。
问题: 有没有一种方法不重复源文件中的命名空间?
NormalClient不是一个命名空间,用这个词你就表明这些函数是这个类的方法。 – eyllanesc
您要重复的是类名,而不是名称空间名称。为了减少冗长,你可以为类型使用别名,除了构造函数和析构函数定义。在现代C++中,您可以通过'using'指令定义一个类型别名,而在C++ 03和C中,您可以使用'typedef'。 –