當我編寫C++代碼時,我嘗試使用using <X>
防止污染太多。在Crypto ++中,它在一種情況下給我帶來問題。這種情況是CryptoPP命名空間中的ASN1命名空間(它只顯示在一個地方)。使用嵌套命名空間聲明「using namespace」時出錯(「namespace xxx :: yyy不允許在使用聲明中」)
以下是Crypto ++中的聲明:http://www.cryptopp.com/docs/ref/oids_8h_source.html。
我可以使用,例如,secp256r1
曲線有:
CryptoPP::ASN1::secp256r1();
不過,我還沒有想出一個辦法使用聲明它。當我嘗試:
#include <cryptopp/asn.h>
#include <cryptopp/oids.h>
using CryptoPP::ASN1;
這最終導致error: namespace ‘CryptoPP::ASN1’ not allowed in using-declaration
,然後error: ‘ASN1’ has not been declared
在下面的(我想他們倆):
ECIES<ECP>::Decryptor d1(prng, secp256r1());
ECIES<ECP>::Decryptor d2(prng, ASN1::secp256r1());
一個人如何使用using
語句時,有不止一個命名空間?
$ g++ -version
i686-apple-darwin11-llvm-g++-4.2
'使用命名空間CryptoPP :: ASN1;' –