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

ООП. Шаблоны - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как вытащить правильные ответы из теста Айрен? http://www.cyberforum.ru/cpp-beginners/thread974222.html
Добрый вечер! Нужно вытащить правильные ответы из теста Айрен! Как это сделать? Ссылка на тест. http://zalil.ru/34769141 Простите и перекиньте пост в нужную ветку, если я не туда попал ;) Спасибо.
C++ Компиляция с параметром Добрый вечер. Как сделать компиляцию проекта с параметром? -fpermissive Были ошибки с чарами, предложили решение : https://forums.alliedmods.net/showpost.php?p=2044497&postcount=4 Так, как кода очень много и вручную искать чары сложно, то я выбрал решение компиляции с параметром. http://www.cyberforum.ru/cpp-beginners/thread974209.html
Найти сумму модулей элементов массива после первого элемента C++
Люди помогите написать программу очень надо. Нужно написать программу, которая будет заполнить массив случайно числами, но чтобы пристутствував 0, количество элементов = 25 найти сумму модулей элементов массива после первого элемента 0.
ввести с клавиатуры последовательно семь чисел, вывести порядковый номер наименьшего из них C++
ввести с клавиатуры последовательно семь чисел, вывести порядковый номер наименьшего из них. Без массива , через цикл for , на С
C++ Программа для вычисления arctg(x) http://www.cyberforum.ru/cpp-beginners/thread974174.html
народ, кто нибудь может объяснить что нужно сделать в этой программе?
C++ Конъюнкция и дизъюнкция Есть такой участок кода: while ((value != 0) || (value != 0)) { for (int i = 0; i < 2; i++) { cout << "Введите число №" << i+1 << " : "; cin >> value; } } подробнее

Показать сообщение отдельно
gorus95
5 / 5 / 1
Регистрация: 22.12.2012
Сообщений: 145
10.10.2013, 20:46     ООП. Шаблоны
Начинаю учить ООП и Шаблоны. Вот нашел пример в учебнике, все сделал так как там написано.
Но почему-то при компиляции выдает ошибки.
tovar.h
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#ifndef _tovar_h_
#define _tovar_h_
 
#include <iostream>
#include <string.h>
using namespace std;
 
template <class Currency> class Tovar
{
private:
    static Currency sum;
    Currency price;
    string units;
 
public:
    static Currency GetSum (void);
    bool Sell (void);
    Tovar();
    Tovar(Currency);
    Tovar(Currency, const string&);
    friend ostream& operator << <Currency> (ostream&, Tovar<Currency>&);
};
 
template <class Currency> Currency Tovar<Currency>::sum = 0;
 
template <class Currency> Currency Tovar<Currency>::GetSum (void)
{
    return sum;
}
 
template <class Currency> bool Tovar<Currency>::Sell(void)
{
    if (price > 0)
    {
        sum += price;
        price = 0;
        return true;
    }
    else return false;
}
 
template <class Currency> Tovar<Currency>::Tovar(Currency p)
{
    price = 1;
    units = "piece";
}
 
template <class Currency> Tovar<Currency>::Tovar(Currency p, const string& ov)
{
    price = (p>0)?p:0;
    units = ov;
}
 
template <class Currency> ostream& operator << (ostream& os, Tovar<Currency>& t)
{
    if(t.price>0) return os<<"$"<<((Currency)t.price)<<" per 1 "<<t.units;
    else return os <<"Sold 1 "<<t.units<<" Cash=="<<Tovar<Currency>::sum;
}
#endif
main.cpp
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 <string.h>
#include "tovar.h"
using namespace std;
 
void main (void)
{
    Tovar <int> tovar1_int;
    Tovar <int> tovar_int(10);
    Tovar <float> tovar_float((float)29.95, "kg");
    cout <<"INT typed Tovar:"<<endl<<tovar1_int<<endl<<tovar_int<<endl;
    cout <<"FLOAT typed Tovar:"<<endl<<tovar_float<<endl;
    cout <<"NOW SALE!!!"<< endl;
    if(tovar1_int.Sell()) cout << "Sell ok! ";
    cout << "tovar1_int: " << tovar1_int << endl;
    if(tovar_int.Sell()) cout << "Sell ok! ";
    cout << "tovar_int: " << tovar_int << endl;
    if(tovar_float.Sell()) cout << "Sell ok! ";
    cout << "tovar_float: " << tovar_float << endl;
    cout << "Cash<INT>: " << Tovar<int>::GetSum() << endl;
    cout << "Cash<FLOAT>: " << Tovar<float>::GetSum() << endl;
}


Ошибки:
Ошибка 1 error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое преобразование отсутствует) e:\programming\c++\consoleapplication1\tovar.h 56
Ошибка 2 error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое преобразование отсутствует) e:\programming\c++\consoleapplication1\tovar.h 57
Ошибка 3 error C2088: <<: недопустимо для class e:\programming\c++\consoleapplication1\tovar.h 56
Ошибка 4 error C2088: <<: недопустимо для class e:\programming\c++\consoleapplication1\tovar.h 57

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