2

#declare で「自動」に変数を作成したい。したがって、新しい変数のクラス定義に何度も入力したくありません (実際には、単純な整数ではなく、多次元ベクトルを宣言しています...)

私はこのコードを持っています:

#define inti(aa)(int (aa)=3)

...

inti(a);

しかし、コンパイラは次のように述べています。

「エラー: 'a' はこのスコープで宣言されていません」

この問題を C++ で解決することは可能ですか? 助けてください!

4

2 に答える 2

8

使用する:

 #define inti(aa) int aa=3

だって

(int aa=3);

違法であり、さらにあなたがそこに持っているものです。

実際、それをスクラッチします。マクロを使用しないでください。変数を古き良き方法で宣言するだけです。

実際、私は多次元ベクトルを宣言しています

あなたの実際の問題を述べるための質問に+1 。これが a のtypedef目的です。

typedef std::vector<std::vector<int> > MDVector;
MDVector multiDimensionalVector;
于 2012-05-30T19:07:40.973 に答える
2

次のように a のtypedef代わりに a を使用できます。#define

typedef complexClassName<PossiblyWithManyTemplateParameters> Name
Name var1;
Name var2;
Name var3;

長い名前を何度も入力したくない場合。

于 2012-05-30T19:09:54.660 に答える