Форум программистов, компьютерный форум CyberForum.ru

Передать инициализированный std::vector конструктору базового класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Заданы три числа D, M, Y, которые обозначают число, месяц и год. Найти номер N http://www.cyberforum.ru/cpp-beginners/thread1139808.html
Помогите решить задачу Заданы три числа D, M, Y, которые обозначают число, месяц и год. Найти номер N этого дня с начала года (високосные года – это те, у которых номер делится на 400, и те, у которых номер делится на 4, но не делится на 100). Сколько можно дублировать сообщения!
C++ Проверка наличия слова в тексте на javascript есть вот такой простой способ проверки /Hello/.test('Hello World'); // true /Hi/.test('Hello World'); //false есть ли что то подобное в C++ ? http://www.cyberforum.ru/cpp-beginners/thread1139801.html
C++ Вывести круги на экран
Нужна помощь. Вот задание: В файле заданы координаты радиусов кругов. Вывести круга на экран. Круги что пересекаються выделить отдельным цветом. У меня выделяются только 2 круга int b = 0, mas, k = number_of_laps(), a = 0;//Ряд for (a = 0; a < k; a++) { for (b = 0; b < 4; b++) { mas = read_values(a, b); }
Error C2059: синтаксическая ошибка: if C++
Впервые с таким столкнулся: // proc_db.h #ifndef PROC_DB #define PROC_DB #include <stdio.h>
C++ Удаление end() итератора http://www.cyberforum.ru/cpp-beginners/thread1139750.html
Добрый вечер. Интересует следующий момент: что происходит в памяти (структуре контейнера) при вызове cont.erase(cont.end())? Если cont есть vec, то появляется ошибка. Если же cont - это list, то никаких сигналов не выдаётся? Из - за чего такая разница? Спасибо.
C++ Работа со строками Напечатать в алфавитном порядке все слова, которые входят в заданный текст по одному разу. Прошу помочь. подробнее

Показать сообщение отдельно
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
05.04.2014, 20:38     Передать инициализированный std::vector конструктору базового класса
В общем появилась одна проблема. Никак не пойму как можно сделать. В общем дело такое:
1) Есть класс Coord, который содержит координаты.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef COORD_H
#define COORD_H
 
class Coord
{
    public:
        Coord(int, int);
        int getX(){return x;}
        int getY(){return y;}
    private:
        int x, y;
};
 
Coord::Coord(int x_, int y_):
    x(x_),
    y(y_)
{
    ;
}
 
#endif
2) Есть класс ParentClass, который содержит std::vector этих координат, манипулирует этим вектором и делает, что хочет, но есть условие: инициализироваться этот вектор должен в конструкторе.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef PARENT_H
#define PARENT_H
 
#include "Coord.h"
 
class ParentClass
{
    public:
        ParentClass(std::vector<Coord>);
        void print();
        
        const int VeryCoolAwesomeInfo;
    private:
        std::vector<Coord> vec;
};
 
ParentClass::ParentClass(std::vector<Coord> vec_):
    vec(vec_), 
    VeryCoolAwesomeInfo(100)
{
    ;
}
 
void ParentClass::print()
{
    for (int i = 0; i < vec.size(); i++)
        std::cout << vec[i].getX() << std::endl;
}
 
#endif
3) Есть класс ChildClass, унаследованный от ParentClass, в конструкторе которого в списке инициализации должен вызваться конструктор ParentClass(std::vector<Coord>) с соответствующей передачей аргумента.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef CHILD_H
#define CHILD_H
 
#include "Parent.h"
 
class ChildClass: public ParentClass
{
    public:
        ChildClass();  
};
 
ChildClass::ChildClass():
    ParentClass(std::vector<Coord>(2, (Coord(10, 10), Coord(20,20)) ) )    //вот здесь загвоздка, здесь я хочу передавать нужные Coord
{
    ;
}
 
#endif
Но не тут то было. Если передавать, как передал я, (Coord(10, 10), Coord(20,20)), то инициализируется передаваемый вектор только Coord(20,20), а Coord(10,10) откинется. Я так написал, потому-что не знаю как все таки в базовый класс передать все что я хочу, как Coord(10, 10), так и Coord(20,20).
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <vector>
 
#include "Child.h"
 
int main(int argc, char *argv[])
{
    ChildClass c;
    c.print();
    system("PAUSE");
    return EXIT_SUCCESS;
}
Выводит (20, 20), (20, 20), а нужно (10,10), (20, 20)
Помогите пожалуйста.

Добавлено через 33 минуты
Ну может кто нибудь сталкивался уже?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru