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

Классы - C++

Войти
Регистрация
Восстановить пароль
 
knf
16 / 16 / 2
Регистрация: 18.09.2012
Сообщений: 184
22.05.2013, 13:16     Классы #1
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
class Animal{
public:
  virtual string voice() = 0;
  void print();
};
 
class Cat: public Animal {
public:
  string voice(){return "Мяу!";}
};
 
class Dog: public Animal {
public:
  string voice(){return "Гав!";}
};
 
void printVoice(Animal *animal){
  cout << animal->voice(); 
}
 
void Animal::print(){
    cout<<"LOL";
}
int main()
{
    Animal *animal11=new Cat;
    Animal *animal22=new Dog;
    Animal *an;
    /*an->print();*/
    printVoice(animal11);
    printVoice(animal22);
 
    delete animal11;
    delete animal22;
    system("pause");
    return 0;
}
Ругается тут на <<
C++
1
cout << animal->voice();
Почему ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2013, 13:16     Классы
Посмотрите здесь:

C++ Классы
Классы C++
Классы C++
C++ КЛАССЫ
C++ Классы
классы C++
C++ классы с++
Классы C++ C++
C++ классы
C++ C++ классы
Классы с++ C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2913 / 1342 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
22.05.2013, 13:23     Классы #2
Потому что надо подключить библиотеку string, в которой описан оператор вывода типа std::string.
C++
1
#include <string>
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
22.05.2013, 13:58     Классы #3
Цитата Сообщение от lemegeton Посмотреть сообщение
Потому что надо подключить библиотеку string, в которой описан оператор вывода типа std::string.
Кстати, почему так? Т.к. использовать сам std::string можно без подключения <string>, например:
C++
1
cout << s.c_str();
Проверял в VS2012.
lemegeton
 Аватар для lemegeton
2913 / 1342 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
22.05.2013, 16:32     Классы #4
Это зависит от конкретной реализации STL библиотек и порядка их включения друг в друга.
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
22.05.2013, 16:36     Классы #5
lemegeton, ну я бы понял когда, скажем, <iostream> включает в себя <string>. Интересно почему такая "половинчатость": тип есть, а вывода нет.
Yandex
Объявления
22.05.2013, 16:36     Классы
Ответ Создать тему
Опции темы

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