Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ G+的奇怪错误+;_C++_Compilation_G++ - Fatal编程技术网

C++ G+的奇怪错误+;

C++ G+的奇怪错误+;,c++,compilation,g++,C++,Compilation,G++,我通过g++得到以下错误: wormAlgo.cpp: In function ‘void svm(cv::Mat&, cv::Mat&, cv::Mat&, cv::Mat&)’: wormAlgo.cpp:146:8: error: expected unqualified-id before numeric constant wormAlgo.cpp:146:8: error: expected ‘;’ before numeric constant 我的

我通过g++得到以下错误:

wormAlgo.cpp: In function ‘void svm(cv::Mat&, cv::Mat&, cv::Mat&, cv::Mat&)’:
wormAlgo.cpp:146:8: error: expected unqualified-id before numeric constant
wormAlgo.cpp:146:8: error: expected ‘;’ before numeric constant
我的代码是:

void svm(cv::Mat& trainingData, cv::Mat& trainingClasses, cv::Mat& testData, cv::Mat& testClasses) 
{
    CvSVMParams param = CvSVMParams();

    param.svm_type = CvSVM::C_SVC;
    param.kernel_type = CvSVM::RBF; //CvSVM::RBF, CvSVM::LINEAR ...
    param.degree = 0; // for poly
    param.gamma = 20; // for poly/rbf/sigmoid
    param.coef0 = 0; // for poly/sigmoid
    param.C = 7.0; // for CV_SVM_C_SVC, CV_SVM_EPS_SVR and CV_SVM_NU_SVR
    param.nu = 0.0; // for CV_SVM_NU_SVC, CV_SVM_ONE_CLASS, and CV_SVM_NU_SVR
    param.p = 0.0; // for CV_SVM_EPS_SVR
    param.class_weights = NULL; // for CV_SVM_C_SVC
    param.term_crit.type = CV_TERMCRIT_ITER +CV_TERMCRIT_EPS;
    param.term_crit.max_iter = 1000;
    param.term_crit.epsilon = 1e-6;
第146行的代码是
param.C=7.0;//对于CV_SVM_C_SVC、CV_SVM_EPS_SVR和CV_SVM_NU_SVR


你能帮帮我吗。

你可能对
C
有一个定义。看看代码:

#define C 42

class Foo
{

};

void f()
{
    Foo f;
    f.C = 7;
}
预处理后,行
f.C=7
将更改为
f.42=7
,因此将出现错误

PS:clangs输出看起来更漂亮

/home/soon/Src/C++/main/main.cpp:14:7: error: expected unqualified-id
    f.C = 7;
      ^
/home/soon/Src/C++/main/main.cpp:4:11: note: expanded from macro 'C'
#define C 42
          ^

您能显示
CvSVMParams
类的代码吗?至少
CvSVMParams::C
成员的声明…不相关,但您不需要
=CvSVMParams()part@TomasLycken这部分来自opencv。我怀疑这里面有什么错误。你有没有用
C
作为名字的定义?@RitwikG:另外,正如@Andy Prowl所指出的,你应该删除
=CvSVMParams()
-这样做的目的是使用默认构造函数创建一个(匿名)实例,然后将该实例复制到
param
变量中。如果您只是执行
CvSVMParams参数
直接使用默认值来构造
参数
,并且不会在从未使用过的虚拟对象上浪费任何资源。最近的g++与这里的clang具有大致相同的消息。