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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
#1

valarray, наследование - C++

21.06.2013, 18:39. Просмотров 545. Ответов 6
Метки нет (Все метки)

Файл использующий объекты:
123.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include "dma.h"
#include <cstdlib>
 
int main(void)
{
using std::cin;
using std::cout;
using std::endl;
 
cout << "Enter name of wine: ";
char lab[50];
cin.getline(lab, 50);
cout << "Enter number of years: ";
int yrs;
cin >> yrs;
Wine holding(lab, yrs);
 
   system("PAUSE"); 
   return 0;
}
Определения классов dma.cpp:
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
#include "dma.h"
#include <cstring>
Pair::Pair()
{
    year(0);
    bottles(0);
}
 
Pair::Pair(int & yr, int & bot)
{
    year(yr);
    bottles(bot);
}
 
Pair::Pair(int & yr)
{
    year(yr);
}
 
Wine::Wine(char * lab, int & yr) :Pair(yr)
{
    for(int i=0; lab[i] != '/0'; i++)
    {
        name[i] = lab[i];
    };
}
Объявление классов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <valarray>
using namespace std;
class Pair
{
private:    
    typedef valarray<int> year;
    typedef valarray<int> bottles;
public:
 
    Pair();
    Pair(int & yr, int & bot);
    Pair(int & yr);
};
 
class Wine : public Pair
{
private:
    string name;
public:
    Wine(char * lab, int & yr);
}
А это отчет об компиляции, непонимаю где я пытался преобразовать Wine в int или наоборот:
dma.cpp
1>c:\users\андрей\documents\visual studio 2010\projects\123\dma.cpp(4): error C2533: Pair::{ctor}: конструкторы не разрешены для возвращаемого типа
1>c:\users\андрей\documents\visual studio 2010\projects\123\dma.cpp(11): error C2082: переопределение формального параметра "yr"
1>c:\users\андрей\documents\visual studio 2010\projects\123\dma.cpp(12): error C2082: переопределение формального параметра "bot"
1>c:\users\андрей\documents\visual studio 2010\projects\123\dma.cpp(17): error C2082: переопределение формального параметра "yr"
1> 123.cpp
1>c:\users\андрей\documents\visual studio 2010\projects\123\123.cpp(7): error C2628: недопустимый "Wine" с последующим "int" (возможно, отсутствует ";")
1>c:\users\андрей\documents\visual studio 2010\projects\123\123.cpp(8): error C3874: возвращаемый тип "main" должен быть "int", а не "Wine"
1>c:\users\андрей\documents\visual studio 2010\projects\123\123.cpp(31): error C2664: Wine::Wine(const Wine &): невозможно преобразовать параметр 1 из "int" в "const Wine &"
1> Причина: невозможно преобразовать "int" в "const Wine"
1> Ни один конструктор не смог принять исходный тип, либо разрешение перегрузки конструктора неоднозначно

1> Создание кода...
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:02.00
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Добавлено через 2 минуты
Честно говоря очень сложно изучать ООП, может кто-то подскажет хороший ресурс где хорошо разжевано?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2013, 18:39     valarray, наследование
Посмотрите здесь:

valarray - C++
Помогите разобраться, в книге есть код: // studentc.h -- defining a Student class using containment #ifndef STUDENTC_H_ #define...

valarray and complex - C++
Вот есть такой код: double v = {0,1,2,1.3,4.2,0.5}; valarray&lt;double&gt; x(v,6); complex&lt;double&gt; y; y = x; здесь все...

Библиотека valarray - C++
Недавно спрашивал про библиотеки set и list. Там все разобрался, а вот как добавлять в valarray и что более интересно как искать там...

Класс valarray и Student - C++
Конструктор на строке 24,25 вводит меня в замешательство. Что это за конструктор? Зачем он нужен? Ведь без него код компилируется ( если...

Инициализация valarray в классе - C++
Добрый день. Требуется помощь коллективного разума: совсем забыл, как прогать. Есть следующий кусок простого кода: //1.h ...

Работа с шаблонным классом valarray - C++
Доброго времени суток, господа! для шаблонного класса valarray есть конструктор создания массива из n элементов со значениями v ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Модератор
Эксперт CЭксперт С++
7167 / 4333 / 633
Регистрация: 29.11.2010
Сообщений: 11,778
21.06.2013, 18:46     valarray, наследование #2
Цитата Сообщение от faradej Посмотреть сообщение
class Wine : public Pair
{
private:
* * string name;
public:
* * Wine(char * lab, int & yr);
}
; не поставили в конце

А инклюд гварды кто за вас добавлять будет?
Цитата Сообщение от faradej Посмотреть сообщение
for(int i=0; lab[i] != '/0'; i++)
* * {
* * * * name[i] = lab[i];
* * };
что за чушь, да еще и с ; лишней на конце. Где-то убавилось - где-то прибавилось...

Добавлено через 36 секунд
Цитата Сообщение от faradej Посмотреть сообщение
using namespace std;
за такое в хедерах бьют по рукам. Вы обрекаете весь проект на свалку всех функций в стандартное пространство имен.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.06.2013, 18:47     valarray, наследование #3
Цитата Сообщение от faradej Посмотреть сообщение
lab[i] != '/0'
Здесь точно ошибка есть.
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
21.06.2013, 20:32  [ТС]     valarray, наследование #4
Цитата Сообщение от MrGluck Посмотреть сообщение
Сообщение от faradej
class Wine : public Pair
{
private:
* * string name;
public:
* * Wine(char * lab, int & yr);
}
; не поставили в конце
А инклюд гварды кто за вас добавлять будет?
Спасибо, это помогло остались ошибки:
1>c:\users\андрей\documents\visual studio 2010\projects\123\dma.cpp(11): error C2082: переопределение формального параметра "yr"
1>c:\users\андрей\documents\visual studio 2010\projects\123\dma.cpp(12): error C2082: переопределение формального параметра "bot"
1>c:\users\андрей\documents\visual studio 2010\projects\123\dma.cpp(17): error C2082: переопределение формального параметра "yr"

Цитата Сообщение от go Посмотреть сообщение
Сообщение от faradej
lab[i] != '/0'
Здесь точно ошибка есть.
Это мини-функция по копированию из указателя на char в string, так удобней мне, чем пользоваться библиотечной, она не все делает что я захочу. Конкретно lab[i] != '/0', это проверка на конец строки, или что-то не так?
MrGluck
Модератор
Эксперт CЭксперт С++
7167 / 4333 / 633
Регистрация: 29.11.2010
Сообщений: 11,778
21.06.2013, 20:40     valarray, наследование #5
@faradej, ну во-первых нуль-терминированный символ это \0, а во-вторых, конструктор string сделает ту же работу, даже лучше.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.06.2013, 22:01     valarray, наследование #6
Цитата Сообщение от faradej Посмотреть сообщение
'/0'
Вы думаете, что это один символ? http://ru.wikipedia.org/wiki/%D0%9D%...BE%D0%BA%D0%B0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2013, 10:37     valarray, наследование
Еще ссылки по теме:

Непонятное поведение std::valarray - C++
Есть такой код: #include &lt;iostream&gt; #include &lt;valarray&gt; using namespace std; int main() { valarray&lt;int&gt; a(2); a = 2;...

Valarray, индекс максимального элемента - C++
Подскажите, пожалуйста в valarray есть функция myvalarray.max() А как получить индекс этого элемента? myvalarray.sum() ...

Как создать двумерный массив через valarray? - C++
как создать двумерный массив через valarray? ну вот одномерный: valarray &lt;int&gt; arr(10,5); массив из 5 пяти элементов, а как создать...

Заменить наследование классов на наследование интерфейсов - C++
#include &lt;iostream&gt; #include &lt;assert.h&gt; using namespace std; int people_on_base = 100; int vehicles_on_base = 100; double...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
22.06.2013, 10:37  [ТС]     valarray, наследование #7
Ну я уже делал так раньше, слеш не в ту сторону поставил это мой протуп да, а что с этим:
error C2082: переопределение формального параметра "yr"
error C2082: переопределение формального параметра "bot"
error C2082: переопределение формального параметра "yr"


Добавлено через 33 минуты
В общем понял в чем моя ошибка была, я хотел присваивать инициализировать тип а не переменную .
Но вот с этой проблемой копирования чара в стринг я сталкивался часто и решал ее разными циклами, но наверно есть способ попроще:
error C2664: strcpy: невозможно преобразовать параметр 1 из "std::string" в "char *"

C++
1
2
3
4
5
Wine::Wine(char * lab, int & yrs)
{
    year= yrs;
    strcpy(name, lab);
}
Добавлено через 59 минут
В общем уже неактуально , всем спасибо.
Yandex
Объявления
22.06.2013, 10:37     valarray, наследование
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru