У меня есть следующий пример кода. Можно ли инициализировать список объектов без указания «Тест» в векторе объектов, или это лучший способ? Благодарю.

class Test {
public:
    Test(const std::initializer_list<int> list) : m_(list) {

    }

private:
    std::vector<int> m_;
};

int main(int argc, char **argv) {
    std::vector<Test> v = { Test({1, 2, 3}), Test({1, 2, 4}) };


}
0
Mark W 21 Окт 2015 в 23:30

2 ответа

Лучший ответ

Следующие работы:

std::vector<Test> v = {{1, 2, 3}, {1, 2, 4}};

Но я не уверен, что вы имели в виду именно это.

4
Simón González Guerra 21 Окт 2015 в 20:36

Ниже приведены все допустимые методы инициализации vector<Test>.

 std::vector<Test> v1 = { Test({1, 2, 3}), Test({1, 2, 4}) };
 std::vector<Test> v2{Test({1, 2, 3}), Test({1, 2, 4}) };

 std::vector<Test> v3 = { {1, 2, 3}, {1, 2, 4}};
 std::vector<Test> v4{{1, 2, 3}, {1, 2, 4}};
3
R Sahu 21 Окт 2015 в 20:42