从矢量数组中调用功能

call a function from an array of vectors

本文关键字:调用 功能 数组      更新时间:2023-10-16

在以下代码中,我在第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. 访问数据成员的正确语法应为:

    (*(obj2->obj))[0].getSum();
    
  2. 请注意,secondClass::objprivate数据成员,因此您无法在main()中访问。

  3. 对于您显示的代码示例,您根本不需要使用RAW指针和new