c++ - 从 vector 数组调用函数

标签 c++ class vector

在下面的代码中,第 33 行出现错误。为什么?正确的语法是什么? 我肯定犯了一些愚蠢的错误......不幸的是我正在努力更好地理解 vector 。

#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. 对于您展示的代码示例,您根本不需要使用原始指针和new

关于c++ - 从 vector 数组调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43454142/

相关文章:

c++ - 将多维 std::vector 排序为单个 vector

c++ - 装饰者模式 vs. 调用 super 反模式

c++ - 没有匹配的调用函数,但从未调用过那个确切的函数

c++ - 在 C++ 中返回 vector 标准

class - 如何创建 coffeescript 单例子类

c++ - 类函数/变量是否必须在使用前声明?

c++ - 英特尔 TBB 比标准慢 2 倍 - tbb vs std

c++ - 使用可变参数模板进行扩展

c++ - 链接器错误 C++ Visual Studio 2005

c++ - 使用 boost::iostreams mapped_file_source 和 filtering_streambuf 解压文件