从一组向量中调用一个函数

时间:2017-04-17 15:10:23

标签: c++ class vector

在下面的代码中,我在第33行收到错误。为什么?什么是正确的语法? 当然我犯了一些愚蠢的错误......不幸的是,我试图更好地理解这些载体。

#include <iostream>
#include <vector>

class firstClass
{
    public:
        firstClass(int x, int y):sum(x+y)
        {
        }
        void getSum()
        {
        std::cout << sum << std::endl;
        }
    private:
        int sum;
};

class secondClass
{
    public:
        secondClass(int dim)
        {
            obj = new std::vector<firstClass>(dim,firstClass{3,5});
        }
    private:
        std::vector<firstClass>*obj;
};

int main()
{
    secondClass*obj2;
    obj2 = new secondClass(4);
    obj2->(*obj)[0].getSum(); //HERE!
    return 0;
}

错误:

error: expected unqualified-id before '(' token
error: 'obj' was not declared in this scope

1 个答案:

答案 0 :(得分:1)

  1. 访问数据成员的正确语法应为:

    <div class="container-fluid">
        <div class="row">
            <div class="col-12">
                <img class="img-fluid" src="images/section-image-02.jpg" alt="">
            </div>
        </div>
    </div>
    
  2. 请注意,(*(obj2->obj))[0].getSum(); secondClass::obj数据成员,因此您无法在private中访问它。

  3. 对于您展示的代码示例,您根本不需要使用原始指针和main()