19

using <X>私がC++コードを書くとき、私は過度に汚染しないようにaを使用しようとします。Crypto ++では、1つのケースで問題が発生します。ケースは、CryptoPP名前空間内のASN1名前空間です(1つの場所にのみ表示されます)。

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
4

4 に答える 4

26

言うだけ:

using namespace CryptoPP::ASN1;
于 2012-12-22T02:36:17.157 に答える
14

他の回答をお勧めしますが、名前空間のすべてのコンテンツをスコープusing namespace CryptoPP::ASN1;にインポートするため、(おそらく)それはあなたが望んでいたことではありません。ASN1

私の推測では、あなたはこれをやりたかったのです:

namespace ASN1 = CryptoPP::ASN1;

これにより、たとえばASN1::secp256r1()スコープで使用できるようになります。

于 2018-02-15T15:53:31.623 に答える
4

ASN1は名前空間です。試す:

using namespace CryptoPP::ASN1;
于 2012-12-22T02:38:57.740 に答える
4

試す

using CryptoPP::ASN1::secp256r1;

...その後、secp256r資格なしで電話をかけます。これにより、一部の人が眉をひそめる名前空間の使用を回避できます。

于 2012-12-22T02:48:32.120 に答える