C++ 错误:C2059:语法错误:';{';
我想在qt creator中运行一个应用程序。但当我单击build时,它在carddetect.cpp中显示错误 此处出现错误:C++ 错误:C2059:语法错误:';{';,c++,syntax-error,C++,Syntax Error,我想在qt creator中运行一个应用程序。但当我单击build时,它在carddetect.cpp中显示错误 此处出现错误:void CardDetect::aamvaIssuerList() 但我不知道那个错误是什么 124: error: C2059: syntax error : '{' 124: error: C2143: syntax error : missing ';' before '{' 124: error: C2143: syntax error : missing '
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" };
}
它显示错误
error: C2512: 'issuer' : no appropriate default constructor available
error: C2512: 'issuer::issuer' : no appropriate default constructor available
在struct issuer issuerInfo;中,由于不能使用复合文字,因此下面是一个如何实现的示例: 将构造函数添加到结构中:
struct issuer {
issuer(const char *nm, const char *abbr, const char *fmt) : name(nm),
abbreviation(abbr), format(fmt) {}
QString name;
QString abbreviation;
QString format;
};
并将您的功能更改为:
void CardDetect::aamvaIssuerList(){
issuerList [ "636026" ] = issuer("Arizona", "AZ", "L");
// same for the rest of the lines
}
当然,还有其他的方法。用C和C++来标记这个问题是没有意义的,因为它在C和C++中有不同的含义。C(99)这是有效的代码,在C++中,它不是。那么,你使用哪种语言?@你似乎混淆了C++。这显然是C++而不是C。你正在使用的结构(<代码>(类型){RealalIsIs} /Cuth>)是复合文字,它是C11,或者任何GNU C/C++,但是据我所知,它不是标准C++,MSVC不支持它。重写你的代码。好的,谢谢。我是C++初学者。请你帮我换个字好吗?keltar@DavidHeffernan不,我没有感到困惑——只要看看这个问题的修订历史就可以了。我在修订时已经写下了我的评论只包含第一个代码段(一个带有C99复合文字)。在这个问题中没有有效的C++。现在很明显,OP意味着它是C++,但不幸的是它仍然不是。
struct issuer {
issuer(const char *nm, const char *abbr, const char *fmt) : name(nm),
abbreviation(abbr), format(fmt) {}
QString name;
QString abbreviation;
QString format;
};
void CardDetect::aamvaIssuerList(){
issuerList [ "636026" ] = issuer("Arizona", "AZ", "L");
// same for the rest of the lines
}