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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dgroup
0 / 0 / 0
Регистрация: 01.12.2010
Сообщений: 16
#1

Проблемма с компиляцией в Visual C++ 2010 - C++

15.11.2011, 21:50. Просмотров 803. Ответов 10
Метки нет (Все метки)

Проект(empty) создан в консольном режиме, код ниже:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <iostream>
#include <math.h>
#include <fstream>
 
//---------------- Посоветували подключить ----
//---------------- библиотеки ----------------- 
//#pragma comment (lib, "bufferoverflowU.lib") 
//#pragma comment (lib, "bufferoverflowK.lib")
//#pragma comment (lib, "bufferoverflow.lib")
 
//---------------------------------------------
 
using namespace std;
 
class AllFunction {
    public:
        double m_mainQ;
 
        AllFunction(){
            m_mainQ = 0;
        }
    
        virtual void input()=0;
        virtual void output()=0;
        virtual void calculate()=0;  
 
        bool operator ==(const AllFunction& temp) const{
            return m_mainQ == temp.m_mainQ;
        }
        bool operator !=(const AllFunction& temp) const{
            return  m_mainQ != temp.m_mainQ;
        }
        bool operator <(const AllFunction& temp) const{
            return m_mainQ < temp.m_mainQ;
        }
        bool operator <=(const AllFunction& temp) const{
            return m_mainQ <= temp.m_mainQ;
        }
        bool operator >(const AllFunction& temp) const{
            return m_mainQ > temp.m_mainQ;
        }
        bool operator >=(const AllFunction& temp) const{
            return m_mainQ >= temp.m_mainQ;
        }
 
};
 
class Shell: public AllFunction {
    public:
        double  m_deltaS,   m_Fotv,     
                m_Miu,      m_H0,
                m_h,        m_R,
                m_Omega1;
    
     
        static double m_G;// = 9.81;
        
        Shell(){
            m_G = 9.81;
        } 
        Shell(double deltaS,double Fotv, double Miu, double H0, double h , double R, double Omega ){
                m_deltaS    =deltaS;
                m_Fotv      = Fotv;     
                m_Miu       = Miu;
                m_H0        = H0;
                m_h         = h;
                m_R         = R;
                m_Omega1    = Omega;
                m_G = 9.81;
        }
        
        void input(){
            ifstream temp ("input.txt",ifstream::in);
            if (!temp) {
                cout<<"Файл не открылся: input.txt"<<endl;
            }
            temp >> m_deltaS >>  m_Fotv >> m_Miu >> m_H0 >> m_h>>
               m_R >> m_Omega1;
            
            temp.close();
 
        }
        void output(){
            ofstream temp("output.txt", ifstream::out);
            temp << m_mainQ << endl;
            temp.close();
        }
        void calculate(){
            
             m_mainQ = ((2*3.14*m_Miu*m_R*m_Fotv) 
                        / (3*m_G*m_deltaS)) 
                        * ( (sqrt(pow( 2*m_G*m_H0+pow(m_Omega1,2)*pow(m_R,2)+2*m_G*m_h,3 ))) 
                        + sqrt(pow(2*m_G*m_H0 + pow(m_Omega1,2)*pow(m_R,2),3)) )  ;
             
        }
 
    };
    
 
void main(){
    AllFunction *a=new Shell() ;
    a->input();
    a->calculate();
    a->output();
}
=====================
=== Ошибки такие: =====!
====================!!
1) error LNK2001: unresolved external symbol "public: static double Shell::m_G" (? m_G@Shell@@2NA)
2) error KNK1120: 1 unresolved externals
==========
По условии на до Static double m_G, сделать константой, но когда делаю
C++
1
const double m_G = 9.81;
Визуал подчеркивает "= "и пишет error: a member of type cannot have ann-in class initializer
Исправте меня криворукого.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2011, 21:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблемма с компиляцией в Visual C++ 2010 (C++):

Visual Studio 2010 и 2012. Проблемма после установки 12 - C++
Наверное уже кто-то сталкивался с этим и уже написал топик сюда или куда-либо-нибудь, но вот гугл и я убеждаемся в обратном (если я не прав...

Visual C++ 2010 - C++
В чём разница между Visual C++ 2010 и Visual Studio 2010? Посмотрел в Гугле, нигде толком не написано (или ищу плохо). Вообще, складывается...

c++, visual studio 2010! 7 - C++
Given three natural numbers a, b, c which represent the day, month and year of some date. For example: 1, 4, 1991 represents 1st April...

c++, visual studio 2010! 6. - C++
Given natural number n. Compute 2 to the power of n. Do not use pow() function. Example: Input: 5 Output: 32

c++, visual studio 2010! 2. - C++
Given a year number. Output the number of days of that year. Example: Input: 1900 Output 365 Example:

компилирование по visual c++ 2010 - C++
использую visual C++ 2010 создал пустой проект, в проекте пустой файл *.cpp, при нажатии на кнопку построения решения, пишет что не...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Сыроежка
Заблокирован
15.11.2011, 21:55 #2
Вы только статические константы можете инициализировать внутри класса.

Вместо

C++
1
const double m_G = 9.81;
надо написать
C++
1
static const double m_G = 9.81;
dgroup
0 / 0 / 0
Регистрация: 01.12.2010
Сообщений: 16
15.11.2011, 22:05  [ТС] #3
не катит, тоже самое
Сыроежка
Заблокирован
16.11.2011, 18:34 #4
Цитата Сообщение от dgroup Посмотреть сообщение
не катит, тоже самое
Что "тоже самое"?! Не фантазируйте! Либо у вас очень старый компилятор, который не поддерживает стандарт С++!
dgroup
0 / 0 / 0
Регистрация: 01.12.2010
Сообщений: 16
16.11.2011, 18:36  [ТС] #5
ребят. чесно писал
C++
1
static const double m_G = 9.81;
нифига
Сыроежка
Заблокирован
16.11.2011, 18:39 #6
Цитата Сообщение от dgroup Посмотреть сообщение
ребят. чесно писал
C++
1
static const double m_G = 9.81;
нифига
Проблема не в том, что "не катит", а проблема в том, что вы не понимаете, что вы делаете! Если вы объявили константу, то вы не можете менять ее значение в конструкторе!

C++
1
2
3
                Shell(){
                        m_G = 9.81;
                }
Вы хоть думайте, что вы делаете. И кроме того, если возникает ошибка, то надо сообщать, какая ошибка и в каком предложении, чтобы другие не гадали!
Рулик
8 / 8 / 0
Регистрация: 14.11.2011
Сообщений: 54
16.11.2011, 18:41 #7
Задай константой через дефайн
C++
1
#define m_G 9.81
Сыроежка
Заблокирован
16.11.2011, 18:44 #8
Цитата Сообщение от Рулик Посмотреть сообщение
Задай константой через дефайн
C++
1
#define m_G 9.81
И ни в коем случае не делайте так, как вам тут посоветовали! Объявите статическую константу внутри класса.
prazuber
109 / 109 / 3
Регистрация: 29.04.2010
Сообщений: 240
16.11.2011, 19:10 #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
class A {
public:
    static const double g;
};
 
const double A::g = 9.8;
 
class B {
public:
    const double g;
    B() : g(9.8){}
};
На выбор, так сказать.

Добавлено через 4 минуты
Сыроежка, только целочисленные статические константы можно инициализировать внутри класса.
Сыроежка
Заблокирован
16.11.2011, 19:12 #10
Цитата Сообщение от PraZuBeR Посмотреть сообщение

Добавлено через 4 минуты
Сыроежка, только целочисленные статические константы можно инициализировать внутри класса.
Да, вполне возможно. По памяти не помню, надо смотреть стандарт.
dgroup
0 / 0 / 0
Регистрация: 01.12.2010
Сообщений: 16
16.11.2011, 23:13  [ТС] #11
спасибо за ответы, ошибку понял. исправлюсь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2011, 23:13
Привет! Вот еще темы с ответами:

Visual Studio 2010 - C++
как запустить с флехи exe файл программы Си в Visual Studio 2010??

Visual Studio 2010 - C++
Прошу прощения если написал не туда, отдельного форма по VS не нашел! Люди такая проблема!! У меня есть VS 2010 Ultimate начинаю...

Visual studio 2010 - C++
Господа, подскажите, где нужно полазить в опциях студии, чтобы после изменения программы она не запускала последний удачный дебаг? Заранее...

OpenGL и Visual C++ 2010 - C++
Доброго времени суток уважаемые русскоговорящие жители планеты. Подскажите как быть если кто знает. Жил я себе не тужил да вот решил я...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.11.2011, 23:13
Ответ Создать тему
Опции темы

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