当我编写C++代码时,我尝试使用a using <X>来防止污染太多.在Crypto ++中,它在一个案例中给我提问.案例是CryptoPP命名空间中的ASN1名称空间(它只显示在一个地方).
这是Crypto ++中的声明:http://www.cryptopp.com/docs/ref/oids_8h_source.html.
我可以使用例如secp256r1曲线:
CryptoPP::ASN1::secp256r1();
Run Code Online (Sandbox Code Playgroud)
但是,我还没有找到一种方法来使用它来声明它.当我尝试:
#include <cryptopp/asn.h>
#include <cryptopp/oids.h>
using CryptoPP::ASN1;
Run Code Online (Sandbox Code Playgroud)
它最终导致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());
Run Code Online (Sandbox Code Playgroud)
using当有多个命名空间时,如何使用语句?
$ g++ -version
i686-apple-darwin11-llvm-g++-4.2
Run Code Online (Sandbox Code Playgroud)
Cha*_*via 17
说啊:
using namespace CryptoPP::ASN1;
Run Code Online (Sandbox Code Playgroud)
建议其他答案,using namespace CryptoPP::ASN1;但这不是您想要的(大概),因为它将名称空间的所有内容ASN1导入您的作用域。
我的猜测是您想这样做:
namespace ASN1 = CryptoPP::ASN1;
Run Code Online (Sandbox Code Playgroud)
这将允许您ASN1::secp256r1()在您的范围内使用例如。