2013-02-11 11 views
0

Мне нужно установить значение статической переменной float во время выполнения, но я не могу этого сделать. я приведу пример для разработки моей ситуацииМожно ли инициализировать переменную static float во время выполнения?

afile.h

class B { 
    static float variable1; 
    static float variable2; 
public: 
    afunction(float a, float b); 
} 

afile.cpp

#include 'afile.h' 
B::afunction (float a, float b) { 
    float B:variable1 = a; 
    float B:variable2 = b; 
} 

Как вы видите, в приведенном выше функции «прекращение функции» код называется, а затем переменные 'variable1' и 'variable2' должны быть установлены. Я знаю, что код в определении «afunction» неверен, но мне нужен способ установить значение переменной1 и переменной2 во время выполнения.

Если она имеет отношение к моему коду, я использую Visual Studio 6.0 для разработки приложения

+0

Пытались ли вы это? Это сработало? –

+0

Да, я пробовал, как я показал в своем примере, это не работает. Дает определение «ошибка» или «повторная декларация» незаконным в текущей области » – user2060711

+1

** 1 ** Что подскажет вам учебник по C++, как вы присваиваете значения переменной? ** 2 ** Почему вы используете компилятор, устаревший не менее 10 лет? –

ответ

1

Просто написать:

B::afunction (float a, float b) { 
    B::variable1 = a; 
    B::variable2 = b; 
} 

Это должно работать.

+0

Он должен работать, если вы просто добавите пару двоеточий (':'). –

+0

@JoachimPileborg THX для заметки, я просто скопировал код и не заметил, что –

+0

@ user2060711: Замечательно, что вы дали нам код ошибки, однако сообщение тоже помогло бы ... –

0

Сначала вам нужно будет установить статическую переменную, прежде чем вы сможете ссылаться на нее.

Без int test::m_ran = 0; вы получите undefined reference to 'test::m_ran'

#include <cstdio> 

class test 
{ 
public: 
    static void run() { m_ran += 1; } 
    static void print() { printf("test::run has been ran %i times\n", m_ran); } 

private: 
    static int m_ran; 

}; 

int test::m_ran = 0; 

int main() 
{ 
    for (int i = 0; i < 4; ++i) 
    { 
     test::run(); 
     test::print(); 
    } 

    return 0; 
} 

Выходы:

test::run has been ran 1 times 
test::run has been ran 2 times 
test::run has been ran 3 times 
test::run has been ran 4 times 
Смежные вопросы