1
我想在qt创建者中运行应用程序。但是,当我在构建点击,它显示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
}
它表示结构发行者issuerInfo错误
error: C2512: 'issuer' : no appropriate default constructor available
error: C2512: 'issuer::issuer' : no appropriate default constructor available
;
用** C和C++标记这个问题是没有意义的,因为它意味着C和C++中的不同。在C(99)中,这是有效的代码,在C++中,它不是。那么,您使用的是哪种语言? – 2014-11-25 09:11:54
@TheParamagneticCroissant你似乎很困惑。这显然是C++而不是C. – 2014-11-25 09:16:50
您正在使用的构造('(type){initialiser}')是复合文字;它是C11,或任何GNU C/C++,但据我所知,它不是标准的C++,MSVC不支持它。重写你的代码。 – keltar 2014-11-25 09:21:43