2016-10-25 4 views
0

1つ以上のパラメータに使用する次のメソッド(1つのパラメータしかありません)があります。私はデフォルトのパラメータを使用しようとしましたが、これは動作しません。 (ちょうど古いメソッドの元のコードはうまくいきます)私が驚いたことは、その名前で変数名が省略されていることです。 なぜですか?QListのデフォルトのパラメータエラーメッセージ(QListのデフォルトの引数<QVariant>にはint型があります)

これは私の元のメソッドです:

void importFile(QString *); 

私の新しい方法です。

void importFile(QString *, QList<QVariant> IMPORT_FILE_PARAMETERS =0); 

私はこのコードをコンパイルするとQtは「QListにIMPORT_FILE_PARAMETERSためデフォルト引数がintを入力した私に語りました

問題は何ですか? 私はドン'int use - なぜintについて教えてくれるの?あなたの助けのための

おかげで

+1

宣言では、コンパイラは型を必要とするだけで、人間の読みやすさのために名前を付けるだけです。 C++ファイルでは、変数を使用しないと、使用されていない変数の警告は表示されません。 – UKMonkey

+2

あなたのタイトルはあなたが求めているような質問とはあまり関係ありません。しかし、あなたが1つの質問をした方が簡単でしょう。 – juanchopanza

+1

デフォルトのパラメータを使用する代わりに、オーバーロードを検討してください。 IMPORT_FILE_PARAMETERSがデフォルトで構築されているかどうかにかかわらず、あなたのコードがまったく同じように動作しない限り、これはもっときれいなアプローチでしょう。 – StoryTeller

答えて

1

あなたのデフォルトのパラメータは右、整数である「0」、ですか?

使用この:

void importFile(QString *, QList<QVariant> IMPORT_FILE_PARAMETERS = QList<QVariant>()); 

これがデフォルトのパラメータに空QListを行います。

2
QList<QVariant> IMPORT_FILE_PARAMETERS =0 

これは意味がありません。あなたはQListのデフォルトパラメータとして(あなたのエラーメッセージのように、intである)0を与え、代わりにデフォルトの構築リストを作ってみる:何ストライキ

については

QList<QVariant> IMPORT_FILE_PARAMETERS = QList<QVariant>() 

私はその変数名が省略されているのですか? daclarationです。どうして ?

コンパイラは、宣言で名前を気にすることなく、パラメータの型だけを知る必要があります。関数の定義でも省略することはできますが、パラメータにアクセスすることはできません。

1

QListがintではありません その型にint型の値0を割り当てようとしています。

関連する問題