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

Перегрузка потокового оператора (<<). Выдает адрес вместо значения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реализовать шаблонный класс http://www.cyberforum.ru/cpp-beginners/thread629066.html
В общем требуется реализовать шаблонный класс FixedArray<T,N> FixedArray - абстракция вокруг T Использование выглядит как то так: FixedArray<std::vector, 8> myArr1 = {1, 2, 3, 4}; FixedArray<std::string, 8> strArr = {"a", "b", "c", "d"};
C++ stdlib.h - quicksort Идея такова: отсортировать массив A очень быстрым методом Хоара. Пробовал в stdlib.h делать QuickSort - ничего не получилось. Все значения элементов - до 263-1. Т.е. влазят в тип long. Помогите отсортировать! http://www.cyberforum.ru/cpp-beginners/thread629057.html
C++ KeyDown обрабатывает только символы
Всем привет. Собственно сам вопрос, когда я вызываю функцию (пишу на WinApI, но вопрос из основ c++) Она реагирует только на буквы, цифры, а мне нужно ещё VK_LEFT, VK_RIGHT. Но почему то эта функция их не обрабатывает, вопрос почему. void CMovingBallDlg::KeyD(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags) { switch (wP) { case (VK_LEFT)://сообщение не обрабатывается {...
C++ Написать dll для дальнейшего использования в программах на других языках
как правильно написать dll чтоб ей можно было пользоваться программам на других языках, например, на delphi
C++ Ошибка в Dev-C++ http://www.cyberforum.ru/cpp-beginners/thread628998.html
Скачал книгу "Как программировать на С++" Харви и Пола Дейтелов. Дочитал до первой программы и попробовал её переписать в Dev-C++ //first programm c++ #include <iostream.h> main () { cout <<"Добро пожаловать в C++!\n"; return 0; } Выдаёт ошибку: 32:2 C:\Dev-Cpp\include\c++\3.4.2\backward\backward_warning.h #warning This file includes at least one deprecated or antiquated...
C++ Подключить dll Здравствуйте. Есть dll, в ней несколько функций, необходимо добавить еще одну, чтобы выводила окно с приветствием. И затем написать win - проект, который будет использовать эту функцию. В нете нашел информацию, как подключать dll при наличии lib, а если его не будет (lib-а), как тогда подключать и использовать функции? Спасибо. подробнее

Показать сообщение отдельно
Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
26.07.2012, 14:21  [ТС]     Перегрузка потокового оператора (<<). Выдает адрес вместо значения
Цитата Сообщение от Jupiter Посмотреть сообщение
C++
1
2
3
4
5
6
std::string Point::ToString ()
{// Function ToString should also be const also because of reason of mistaken modification of an object's value 
    std::ostringstream os;                        // std::stringstream object
    os << "Point (" << x << ", " << y << ")"; // customization of output 
    return os.str();                                  // str() function retrieve the string from the string buffer
}
Добавлено через 1 минуту

C++
1
std::ostream& operator << (std::ostream &out, Point const& cPoint)


А как мне теперь сделать так чтобы сразу можно было объект MySecondPoint послать на cout <<
Компилятор выдает Link error

C++
1
2
3
4
5
6
7
8
9
std::ostream& operator<< (std::ostream &out, Point &cPoint) 
{
    // SHOULD BE WITHOUT friendness 
    // Point's members directly.
 
    out << cPoint.ToString();
        
    return out;
}
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
#include <iostream>
#include "Point.hpp"
 
 
 
 
int main()
 
    {
 
 
    std::cout << "\n\t ---TEST OF Operator Overloading--- \n";
    
    Point MyPoint(1455  , 1492  );                          // Creating an object of  Point using constructor 
    Point MySecondPoint (1517   , 1796  );                  // Creating an object of  Point using constructor 
    Point MyThirdPoint (1610  , 1882   );                   // Creating an object of  Point using constructor 
    MyPoint.ToString();
    MySecondPoint.ToString();
    std::cout << "\n";
 
 
    std::cout << "\n std::cout << MySecondPoint.ToString();;\n\n\n ";
    std::cout << "\n" <<  MySecondPoint.ToString();
 
 
    std::cout << "\n ---  Now some easy math --- ";
 
    std::cout << "\n MySecondPoint;\n\n\n ";
    std::cout << MySecondPoint;
    
 
  return 0 ; 
}
PS В этом задании нельзя френдить и надо использовать ToString() и надо чтобы operator << be Global но реализован внутри hpp


1>Point.obj : error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Point &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@AAVPoint@@@Z) already defined in main.obj

fatal error LNK1169: one or more multiply defined symbols found
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru