C++ 解决 'vector 中存储自定义类型对象' 报错问题

在 C++ 中,如果尝试在 'vector' 中存储自定义类型对象时,可能会遇到 '存在多个重载' 的报错信息。这通常是因为编译器无法确定应该使用哪个构造函数来创建自定义类型的对象。

以下是一种常见的解决方法:

问题代码:

假设你有一个名为 'Solution' 的类,其中包含一个私有内部类 'my_type',你希望在 'vector' 中存储 'my_type' 对象,但遇到报错。

解决方案:

将 'my_type' 从内部私有类修改为结构体 ('struct'),以便直接使用花括号初始化列表创建对象。

class Solution {
private:
    struct my_type {
        int data;
        vector<int> times;
    };

public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        vector<my_type> solu;
        solu.push_back({nums[0], {0}});
        
        // 其他逻辑处理
        
        return false;
    }
};

解释:

  • 在上述代码中,我们将 'my_type' 定义为一个结构体。
  • 在 'containsNearbyDuplicate' 函数中,我们创建了一个名为 'solu' 的 'vector',用于存储 'my_type' 对象。
  • 使用花括号初始化列表 {nums[0], {0}} 创建 'my_type' 对象,并将其添加到 'solu' 中。

注意:

  • 修复代码后,你可能需要根据实际需求对 'my_type' 结构体和其他逻辑进行调整和完善。
  • 如果问题仍然存在,请提供更多的错误信息和代码上下文,以便我们更好地帮助你解决问题。
C++ 解决 'vector 中存储自定义类型对象' 报错问题

原文地址: https://www.cveoy.top/t/topic/nUT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录