Я хотел бы запустить приложение в qt creator. Но когда я нажимаю на сборке, он показывает ошибку в carddetect.cppОшибка: C2059: синтаксическая ошибка: '{'
Ошибка возникает здесь: void CardDetect::aamvaIssuerList()
Но я не могу узнать, что это ошибка.
124: error: C2059: syntax error : '{'
124: error: C2143: syntax error : missing ';' before '{'
124: error: C2143: syntax error : missing ';' before '}'
Это мой код:
#include "carddetect.h"
#include <QDebug>
void CardDetect::aamvaIssuerList(){
issuerList [ "636026" ] = (struct issuer) {"Arizona", "AZ", "L"};
issuerList [ "0636021"] = (struct issuer) { "Arkansas", "AR", "" };
issuerList [ "636014" ] = (struct issuer) { "California", "CA", "L" };
issuerList [ "636020" ] = (struct issuer) { "Colorado", "CO", "NN-NNN-NNNN" };
issuerList [ "636010" ] = (struct issuer) { "Florida", "FL", "LNNN-NNN-NN-NNN-N" };
issuerList [ "636018" ] = (struct issuer) { "Iowa", "IA", "NNNLLNNNN" };
}
и carddetect.h является
#ifndef CARDDETECT_H
#define CARDDETECT_H
#include <QMap>
#include "magcard.h"
struct issuer {
QString name;
QString abbreviation;
QString format;
};
class CardDetect {
public:
CardDetect(MagCard *_card = 0);
void setCard(MagCard *_card);
private:
MagCard *card;
void processCard();
void luhnCheck();
void creditCardCheck();
void aamvaCardCheck(QString expDate);
void aamvaIssuerList();
QMap<QString,struct issuer> issuerList;
};
#endif // CARDDETECT_H
Этот код работает @keltar
но теперь в этой функции
void CardDetect::aamvaCardCheck(QString expDate) {
if(card->encoding == IATA)
return; //we're only going to support ABA for now
struct issuer issuerInfo;
QString iin = card->accountNumber.left(6);
issuerInfo = issuerList.value(iin);
if(issuerInfo.name.isEmpty()) {
iin = card->accountNumber.mid(1, 6);
issuerInfo = issuerList.value(iin);
if(issuerInfo.name.isEmpty())
return; // this is not a known AAMVA card, abort
}
Это показывает ошибку
error: C2512: 'issuer' : no appropriate default constructor available
error: C2512: 'issuer::issuer' : no appropriate default constructor available
в структура эмитента issuerInfo;
Не имеет смысла помечать этот вопрос ** как ** C, так и C++, потому что это означает что-то другое в C и C++. В C (99) это действительный код, в C++, это не так. Итак, на каком языке вы используете? –
@ TheParamagneticCroissant Вы, похоже, смущены. Это явно C++, а не C. –
Конструкция, которую вы используете ('(type) {initialiser}'), является сложным литералом; это C11 или любой GNU C/C++, но насколько я знаю, он не является стандартным C++ и MSVC его не поддерживает. Перепишите свой код. – keltar