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

Error: Перегрузка оператора вывода в поток, виртуальные методы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В символьной строке определить количество и вывести все самые длинные слова http://www.cyberforum.ru/cpp-beginners/thread868538.html
Дан символьный рядок.Слово - последовательность символов между пробелами, не содержащие пробелов внутри себя. Определить количество и вывести все самые длинные слова. Как сделать ето попроще в С++ Внимательнее выбирайте раздел.
C++ Рекурсивно описать функцию C(n,m) помогите написать код программы если можно. Рекурсивно описать функцию C(n,m), где 0≤m≤n, для вычисления биномиального коэффициента C_n^m по следующей формуле: C_n^0=C_n^n=1; C_n^m=C_(n-1)^m+C_(n-1)^(m-1) при 0<m<n. если кто сможет помочь но не поймет что написано то добавил вложение там понятней.Спасибо. http://www.cyberforum.ru/cpp-beginners/thread868535.html
Калькулятор (Обратная польская нотация) C++
Здравствуйте, не могли бы Вы мне помочь в написании программы, получающей на вход строку (арифметическое выражение) и выводящей результат по вычислению значения этого выражения (строковый калькулятор). Калькулятор должен вычислять операции + , -, *, /, ^ (возвести в степень), также понимать функции min(), возвращающую значение наименьшего по значению аргумента (например min(1,4,7,9,3) должна...
Используя прямую рекурсию, напечатать в обратном порядке последовательность чисел, признаком конца которой является 0 C++
...
C++ Из string в char http://www.cyberforum.ru/cpp-beginners/thread868494.html
Как преобразовать тип string в тип char?? Просто, когда я пишу char s; sring text = "aaaaa"; s = text.c_str(); то выводит ошибку.
C++ Передача файл на сервер php Вроде через InternetWriteFile как то... я хз пхп скрипт приема: $file_name = $_FILES; if($_FILES && $_FILES <819201) { if(is_uploaded_file($_FILES)) { move_uploaded_file($_FILES, $url."/".basename($_FILES)) подробнее

Показать сообщение отдельно
Inocs
28 / 28 / 3
Регистрация: 28.10.2011
Сообщений: 183
17.05.2013, 19:21     Error: Перегрузка оператора вывода в поток, виртуальные методы
Ребят помогите плиз понять в чем дело. Почему возникает ошибка?

В соответствии с моими ожиданиями объекты потомки класса transport (т.е Car и Truck) должны были неявно преобразоваться к классу transport.

Error 2 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'Car' (or there is no acceptable conversion) main.cpp 22 1 TestOverrideOutputStream

Error 1 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'Transport' (or there is no acceptable conversion) main.cpp 21 1 TestOverrideOutputStream

Error 3 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'Truck' (or there is no acceptable conversion) main.cpp 23 1 TestOverrideOutputStream


Main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "Transport.h"
#include "Car.h"
#include "Truck.h"
 
#include <iostream>
 
using namespace std;
 
void main()
{
    Transport * pTrans = new Transport();
    Car       * pCar   = new Car();
    Truck     * pTruck = new Truck();
    
    cout << *pTrans;
    cout << *pCar;
    cout << *pTruck;
}
Transport.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
class Transport
{
protected:
    int CountOfwheels;
 
public:
    Transport();
    ~Transport();
    virtual void Print(std::ostream &os = std::cout)const;  
    
};
Transport.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
27
#include "Transport.h"
#include <iostream>
 
using namespace std;
 
Transport::Transport()
{
    CountOfwheels = 1;
}
 
 
Transport::~Transport()
{
}
 
 
void Transport::Print(ostream &os)const
{
    os << "Transport: " << CountOfwheels;
}
 
 
ostream & operator<<(ostream &os, Transport &t)
{
    t.Print(os);
    return os;
}


Car.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma once
#include "transport.h"
#include <iostream>
 
class Car :
    public Transport
{
public:
    Car();
    ~Car();
    virtual void Print(std::ostream &os)const;
};
Car.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "Car.h"
#include <iostream>
 
using namespace std;
 
Car::Car()
{
    CountOfwheels = 4;
}
 
 
Car::~Car()
{
}
     
void Car::Print(std::ostream &os)const
{
        os << "Car: " << CountOfwheels; 
}
Truck.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#pragma once
#include "transport.h"
#include <iostream>
 
class Truck :
    public Transport
{
public:
    Truck();
    ~Truck();
    
    virtual void Print(std::ostream &os)const;
};
Truck.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "Truck.h"
#include <iostream>
 
using namespace std;
 
Truck::Truck()
{
    CountOfwheels = 8;
}
 
 
Truck::~Truck()
{
}
 
void Truck::Print(std::ostream &os)const
{
    os << "Truck: " << CountOfwheels;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru