在C ++中将对象创建为私有类变量

时间:2015-07-10 07:13:21

标签: c++ class oop object

在我的程序中,我想将OpenCV库中的对象初始化为我自己对象的一部分。但是,每当我初始化它时,我都会收到此错误:

  

错误:预期参数声明符

如果我不使用它的构造函数初始化对象,它就有效,但我需要这样做。此外,我希望以后能够使用此对象的方法来使用新数据对其进行修改。下面是一个非常简单的代码示例,它给出了错误。

class test
{
    public:
        test (int number);

    private:
        cv::LDA lda(2);
}

4 个答案:

答案 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) { }