在我的程序中,我想将OpenCV库中的对象初始化为我自己对象的一部分。但是,每当我初始化它时,我都会收到此错误:
错误:预期参数声明符
如果我不使用它的构造函数初始化对象,它就有效,但我需要这样做。此外,我希望以后能够使用此对象的方法来使用新数据对其进行修改。下面是一个非常简单的代码示例,它给出了错误。
class test
{
public:
test (int number);
private:
cv::LDA lda(2);
}
答案 0 :(得分:3)
如果您使用c ++ 11,那么您可以在声明:
的同时进行初始化class test {
public:
test (int number);
private:
cv::LDA lda{2};
};
如果没有,那么你必须在ctor定义中使用成员初始化:
class test {
public:
test (int number) : lda(2 /*or number?*/) {…};
private:
cv::LDA lda;
};
答案 1 :(得分:2)
如果从test的构造函数中调用lda的构造函数会更好。我认为如果你没有初始化lda,就会调用它的默认构造函数。
答案 2 :(得分:1)
()
不能用于类内成员初始化,因为在某些情况下可以将成员解释为函数声明。
您需要使用{}
或=
:
cv::LDA lda = cv::LDA(2);
// or
cv::LDA lda{2};
答案 3 :(得分:1)
请使用C ++构造函数和成员初始化列表http://en.cppreference.com/w/cpp/language/initializer_list
基本上,通过使用初始化列表,您可以指定构建成员的方式。
class test
{
public:
test (int number);
private:
cv::LDA lda;
};
test::test(int number) : lda(2) { }