私はこの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++では' typedef'を使用しています。 –