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

Функция, которая позволяет выбрать имплементацию члена класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа задание-ответ http://www.cyberforum.ru/cpp-beginners/thread630220.html
И снова здрасти :) Возникла необходимость создания программы по типу Вопрос-Ответ. Т.е. программа задаёт вопрос, в случае если ответят верно - переход к след. вопросу, если нет - ещё 1 попытка или сообщение что ответ не верный(можно и без этого конечно). Всего 4 вопроса. Если у кого есть свободное время, не могли бы Вы написать хотя бы начальный код (для 1 вопроса). В качестве примера можно...
C++ Красивое GUI на с++ Сегодня задался вопросом,кто как создается красивое гуи на с++?Без использование QT и .NET платформы. http://www.cyberforum.ru/cpp-beginners/thread630179.html
Обработка сообщений в стиле WinAPI C++
Здравствуйте. Делаю небольшую игрушку. Использую принцип обмена сообщениями между объектами. В итоге получил то, что некоторые объекты должны переопределять метод, который определяет, может ли объект обработать данное сообщение. Чтобы немного проще было понять вот примерная картина: class Base { public: virtual bool CanHandle(int messageCode)=0; }; class Derived : public Base { public:
C++ Совершенные числа
Здравствуйте. Пытаюсь решить следующую задачку: реализовать метод, который получает число n и возвращает все совершенные числа в диапазоне 0..n. (совершенное число равно сумме своих делителей напр. 6 = 1 + 2 + 3) Думал что получилось, но увидел что программа выводит также число 24, которое не является совершенным. Код: #include <iostream> using namespace std; int main() { int m =0;...
C++ Поиск подстрок http://www.cyberforum.ru/cpp-beginners/thread630141.html
Задание подсчитать все подстроки с использованием функции strstr(). Делаю так: int NumSubStr(char *str1, char *str2){ int result = 0; while(strstr(str1,str2)){ result++; str1= str1 + (int)(strstr(str1,str2) - str1) + Length(str2);
C++ Видеопамять Всем привет. Что можно почитать про видеопамять с использованием C++? Добавлено через 1 минуту Задание такое: реализовать функцию принимающее три параметра цвет фона, цвет тона и код символа и заполняющая этим символов весь экран. подробнее

Показать сообщение отдельно
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
29.07.2012, 11:49     Функция, которая позволяет выбрать имплементацию члена класса
Код ниже компилируется

Хочется добавить фунцию в мейн , которая бы выбирала имплементацию конструктора Line class между колон синтаксисом и обычным
Другими словами, чтобы в файле Line_cpp
Функция по заданнаму желаю юзера выбирала между этом кодом

C++
1
2
3
4
5
Line::Line (const Point& NewStartPoint,const Point& NewEndPoint): StartPoint(NewStartPoint),EndPoint(NewEndPoint)
    {
        // StartPoint =  NewStartPoint  ; 
        // EndPoint   =  NewEndPoint  ; 
    }
или вот этим

C++
1
2
3
4
5
Line::Line (const Point& NewStartPoint,const Point& NewEndPoint)//: //StartPoint(NewStartPoint),EndPoint(NewEndPoint)
    {
         StartPoint =  NewStartPoint  ; 
         EndPoint   =  NewEndPoint  ; 
    }

Line_HPP
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
#ifndef Line_HPP // anti multiply including gates
#define Line_HPP
 
//Line.hpp
#include "Point.hpp"
#include <iostream>
            class Line
            {
            private :               //  declaration of private data members 
    
                Point StartPoint;
                Point EndPoint; 
            public :                // public declaration of data members (in given example haven't ) and member functions 
 
                //----------- Declaration of Constructors -----------//
                Line();
                Line (const Point& NewStartPoint,const Point& NewEndPoint) ; 
                ~Line ();
 
                //----------- Declaration of Operators Overloading the class's members -----------//
                Line& operator = (const Line& ObjLine)      ;                   // Assignment operator.         
 
                //----------- Declaration of Global Ostream << Operator  -----------//
            friend std::ostream& operator<< (std::ostream& out,const Line & ObjLine); 
            }   /*!!!*/ ; /*!!!*/ 
#endif // Line_HPP


Point_HPP
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef Point_HPP // anti multiply including gates
#define Point_HPP
#include <string>
#include <iostream>
#include <sstream>
            class Point
            {   
                private:        //  declaration of private data members 
                double x;       // X coordinate
                double y;       // Y coordinate
                public: // public declaration of data members (in given example haven't ) and member functions 
                    //----------- Declaration of Constructors -----------//
                Point();                                        // Default constructor
                Point(const double newX ,const double newY);                // Constructor 
                ~Point(); // 
                //----------- Declaration of Global Ostream << Operator  -----------//
                friend std::ostream& operator << (std::ostream& out,const Point & ObjPoint); 
            } /*!!!*/ ; /*!!!*/
 
#endif // Point_HPP


Point_hpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//                                                          Point_hpp
#ifndef Point_HPP // anti multiply including gates
#define Point_HPP
#include <string>
#include <iostream>
#include <sstream>
            class Point
            {   
                private:        //  declaration of private data members 
                double x;       // X coordinate
                double y;       // Y coordinate
                public: // public declaration of data members (in given example haven't ) and member functions 
                    //----------- Declaration of Constructors -----------//
                Point();                                        // Default constructor
                Point(const double newX ,const double newY);                // Constructor 
                ~Point(); // 
                //----------- Declaration of Global Ostream << Operator  -----------//
                friend std::ostream& operator << (std::ostream& out,const Point & ObjPoint); 
            } /*!!!*/ ; /*!!!*/
 
#endif // Point_HPP


Line_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
//                                                  Line_cpp
#include "Line.hpp"
    //----------- Implementation of Constructors -----------//
    Line::Line():StartPoint(0,0), EndPoint(0,0) {}
    Line::Line (const Point& NewStartPoint,const Point& NewEndPoint): StartPoint(NewStartPoint),EndPoint(NewEndPoint)
    {
        // StartPoint =  NewStartPoint  ; 
        // EndPoint   =  NewEndPoint  ; 
    }
    //----------- Implementation of Operators Overloading the class's member -----------//
    Line& Line::operator = (const Line& ObjLine)            // Assignment operator.         
        {
                std::cout << "\n*My assignment LINE operator was called*\n";
 
                StartPoint=ObjLine.StartPoint;
                EndPoint=ObjLine.EndPoint;
 
                    return *this ; 
        }
        //----------- Implementation of GLOBAL friend  << Operator  -----------//
    std::ostream& operator << (std::ostream& out,const Line & ObjLine)
            {
                return out << "P1(" << ObjLine.StartPoint 
                           << " ) , P2(" << ObjLine.EndPoint << ")" ; 
            }


Point_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
28
29
30
31
//                                              Point_cpp
 
#include "Point.hpp"
 
 int number_of_point_constructor_calls          = 1 ; 
 int number_of_point_destructor_calls           = 1 ; 
 int number_of_point_assignment_operator_calls  = 1 ; 
 
                    //----------- Implementation of Constructors -----------//
            Point::Point() : x(0) , y(0)                                    // Default constructor (implemented using colon syntax )
                { 
                //  std::cout << "hi my default constructor\n\n\t";
                }                           
            Point::Point(const double newX ,const double newY) : x(newX)  , y(newY)     // Constructor 
                { 
                    std::cout << " My Point constructor was called " << number_of_point_constructor_calls++ << " times " << "\n"; 
                }               
            Point::~Point()                                                             // Destructor
                {
                    std::cout << " My Point destructor was called " << number_of_point_destructor_calls++ << " times " << "\n"; 
                }                                    
            Point& Point::operator =  (const Point& ObjPoint)                       // Assignment operator.             
                {       
            std::cout << " My Point assignment operator was called " << number_of_point_assignment_operator_calls++ << " times " << "\n"; 
                    x=ObjPoint.x, y=ObjPoint.y;
                    return *this;                   // The meaning of *this explained in this example (implementation) see comment out  
                }
            std::ostream& operator << (std::ostream& out,const Point & ObjPoint)
                    {
                        return out << "[" << ObjPoint.x << "," << ObjPoint.y << "]" ; 
                    }


main_cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//                                                  main_cpp
#include <iostream>
#include "Point.hpp"
#include "Line.hpp"
 
int main()
    {
    double some_data_for_x[5] = {.1830 , 1.901 , 191.4, 190.0 , 1895.} ; 
    double some_data_for_y[5] = {1903. , 194.7 , 12.11, 1.969 , .1789} ; 
 
    Point P1 (some_data_for_x[1], some_data_for_y[2]); 
    Point P2 (some_data_for_x[2], some_data_for_y[3]); 
 
    Line l(P1, P2); 
    
    std::cout <<"\n Let's cast the line:  " << l << "\n" ; 
 
    std::cout << std::endl;
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru