我的 class 有没有办法像 C++ 中的数组一样获取输入值?

Is there any way my class take input value like array in C++?

我想写一个 class 并获取像数组这样的输入值

int arr[] = {1,2,3,4}
myFunc f = {a,b,c,d};

我的 class 有没有办法像 C++ 中的数组一样获取输入值?

这就是 std::initializer_list 的用途:

#include <vector>
#include <iostream>

class foo {
private:
    std::vector<int> nums_;
public:
    foo(std::initializer_list<int> init) :
        nums_(init.begin(), init.end())
    {}

    void display() {
        for (auto n : nums_) {
            std::cout << " " << n;
        }
        std::cout << "\n";
    }
};

int main()
{
    foo f = { 1,2,3,4 };
    f.display();
    return 0;
}

您可以尝试传递一个指向数组的指针,例如:

class B
{
public:
    B(int* arr, const size_t len)
    {
        // Bad way:
        // this->arr = arr;
        // this->len = len;
        
        // Better:
        this->arr = new int[len];
        this->len = len;
        
        for (int i = 0; i < len; i++)
        {
            this->arr[i] = arr[i];
        }
    }

    ~B()
    {
        // Don't forget to free unused dynamic memory:
        delete[] this->arr;
    }
    
    void printArray() const 
    {
        for (int i = 0; i < this->len; i++)
        {
            std::cout << this->arr[i] << " ";
        }
        
        std::cout << std::endl;
    }
    
    int* arr;
    size_t len;
};


int main()
{
    int* arr = new int[10];
    
    for (int i = 0; i < 10; i++)
    {
        arr[i] = i + 1;
    }
    
    B b(arr, 10);
    
    b.printArray();
    
    delete[] arr;

    return 0;
}

但问题是它不是内存安全的,也不是很有用,因为 CPP 的标准库提供了更好的解决方案。 例如,您可以使用 std::vector