Какой оператор следует перегрузить, чтобы перехватить назначение списка?

Какой оператор следует перегрузить, чтобы поймать назначение списка

whatever myints[] = {32,71,12,45,26,80,53,33};

Будет хорошо, если у вас будет какой-нибудь пример?
Если я перегружаю присваивание, какой тип аргумента я получаю?

Отредактировано: Ооо, так это конструктор, какой тип списка?

Edit2: так должно быть что-то вроде этого (из http://en.cppreference.com/w/cpp/utility/initializer_list)

S(std::initializer_list<T> l) : v(l) {
std::cout << "constructed with a " << l.size() << "-element list\n";
}

право?

1

Решение

Вы хотите определить конструктор, который принимает std::initialize_list<int>. Например:

MadeFromList.h

#ifndef _MADE_FROM_LIST_H_
#define _MADE_FROM_LIST_H_

#include <vector>
#include <ostream>
#include <initializer_list>

class MadeFromList {
public:
MadeFromList(const std::initializer_list<int>& integers) :
myVector(integers)
{}
private:
std::vector<int> myVector;

friend std::ostream& operator<<(std::ostream&, const MadeFromList&);
};

std::ostream& operator<<(std::ostream& outputStream,
const MadeFromList& mfl)
{
for (int x : mfl.myVector)
{
outputStream << x << " ";
}
return outputStream;
}
#endif

main.cpp

#include "MadeFromList.h"#include <iostream>

int main()
{
MadeFromList myListObject = {32, 71, 12, 45, 26, 80, 53, 33};
std::cout << myListObject << std::endl;
return 0;
}

Компилируем и запускаем это:

g++ -std=c++0x -W -Wall -Wextra -pedantic -o test main.cpp
./test

дает вывод:

32 71 12 45 26 80 53 33

Слово для мудрых: эта функция является новой в C ++ 11.

2

Другие решения

Других решений пока нет …