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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С++ файлы http://www.cyberforum.ru/cpp-beginners/thread343452.html
Скажите, а как в C++ работать с типизированными файлами.
C++ Случайные числа Всем привет! Мне нужно сгенерировать действительное случайное число в диапазоне от нуля до 1. Читал вот это: http://www.cyberforum.ru/cpp-beginners/thread44753.html, но там говорится про целые числа... http://www.cyberforum.ru/cpp-beginners/thread343450.html
Операция взятия индексан C++
Добрый день)) //--------------------------------------------------------------------------- #pragma hdrstop #include <tchar.h> #include <windows.h> #include <iostream.h> //#include <cassert.h>
Скрыть ПИН код USB ключа защиты программ. C++
Приветствую. Вопрос, как лучше всего скрыть в теле программы ПИН-код доступа к ключу? BYTE my_main_pin = {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; //ВНИМАНИЕ. Не храните ПИН-код в открытом виде. В примере это сделано для наглядности.
C++ asctime() добавляет \n http://www.cyberforum.ru/cpp-beginners/thread343414.html
В чём логика того, что в строку перед завершающим нулем добавляется символ конца текстовой строки?
C++ Qt + MSVS Начал изучать с++,тут столкнулся с проблемой: графический интерфейс для программы. Решил скачать QT SDK,и тут мне сказали что можно работать с QT в MVS 2010...скажи пожалуйста подробно как привязать QT к MVS что надо установить для этого,что скачать и желательно с ссылочками,буду очень благодарен тому кто мне объяснит что да как делать. P.S извините за название темы..не смог сформулировать) подробнее

Показать сообщение отдельно
Spice
4 / 4 / 0
Регистрация: 14.07.2008
Сообщений: 39

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

19.08.2011, 13:53. Просмотров 1239. Ответов 9
Метки (Все метки)

Приветствую, Форумчане!

Следующий код, оформленный в одном файле работает на ура.
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 решает вопрос, но так и не дает понять причину такого поведения.
У кого-нибудь есть вразумительное объяснение?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru