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

Именованный конструктор + inline - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ С++ файлы http://www.cyberforum.ru/cpp-beginners/thread343452.html
Скажите, а как в C++ работать с типизированными файлами.
Visual C++ Опять же MFC и ошибка с типами. Программа сканирует число из Edit Box, сохраняет их и должна вывести, но выводит 0.00000. Возможно это из-за много разных определений типов, вот код: class Try { public: double x1; Try(double x1=0) {}; virtual ~Try(){}; Try (const Try & Try){}; http://www.cyberforum.ru/cpp-beginners/thread343451.html
C++ Случайные числа
Всем привет! Мне нужно сгенерировать действительное случайное число в диапазоне от нуля до 1. Читал вот это: http://www.cyberforum.ru/cpp-beginners/thread44753.html, но там говорится про целые числа...
Операция взятия индексан C++
Добрый день)) //--------------------------------------------------------------------------- #pragma hdrstop #include <tchar.h> #include <windows.h> #include <iostream.h> //#include <cassert.h>
C++ Скрыть ПИН код USB ключа защиты программ. http://www.cyberforum.ru/cpp-beginners/thread343437.html
Приветствую. Вопрос, как лучше всего скрыть в теле программы ПИН-код доступа к ключу? BYTE my_main_pin = {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; //ВНИМАНИЕ. Не храните ПИН-код в открытом виде. В примере это сделано для наглядности.
C++ asctime() добавляет \n В чём логика того, что в строку перед завершающим нулем добавляется символ конца текстовой строки? подробнее

Показать сообщение отдельно
Spice
4 / 4 / 0
Регистрация: 14.07.2008
Сообщений: 39
19.08.2011, 13:53     Именованный конструктор + inline
Приветствую, Форумчане!

Следующий код, оформленный в одном файле работает на ура.
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
class Point2
{
public:
    static Point2 Decar(double dX, double dY);
    static Point2 Polar(double angle, double radius);
private:
    double dX;
    double dY;
    Point2(double dX, double dY);
};
 
inline Point2::Point2(double dX, double dY): dX(dX), dY(dY)
{
}
inline Point2 Point2::Decar(double dX, double dY)
{
    return Point2(dX, dY);
}
inline Point2 Point2::Polar(double angle, double radius)
{
    return Point2(radius * cos(angle), radius * sin(angle));
}
 
void main()
{
    Point2 point2 = Point2::Decar(1, 2);
    return;
}
Если же объявление класса вынести в отдельный заголовочный файл,
C++
1
2
3
4
5
6
7
8
9
10
11
12
class Point2
{
public:
    static Point2 Decar(double dX, double dY);
    static Point2 Polar(double angle, double radius);
 
private:
    double dX;
    double dY;
 
    Point2(double dX, double dY);
};
а определение в отдельный cpp файл,
C++
1
2
3
4
5
6
7
8
9
10
11
inline Point2::Point2(double dX, double dY): dX(dX), dY(dY)
{
}
Point2 Point2::Decar(double dX, double dY)
{
    return Point2(dX, dY);
}
Point2 Point2::Polar(double angle, double radius)
{
    return Point2(radius * cos(angle), radius * sin(angle));
}
и затем проинклудить заголовочный файл, то линкер начинает ругаться на следующий код:
C++
1
2
3
4
5
void main()
{
    Point2 point2 = Point2::Decar(1, 2);
    return;
}
Error 1 error LNK2019: unresolved external symbol "public: static class Point2 __cdecl Point2:ecar(double,double)" (?Decar@Point2@@SA?AV1@NN@Z) referenced in function _main E:\Coding\C++\Win32\Named Constructor Idiom\MainUnit.obj

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