2013-02-11 3 views
0

런타임 중에 정적 float 변수의 값을 설정해야하지만 그렇게 할 수 없습니다. 내 상황을 정교하게 예를 제공합니다런타임 중에 정적 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; 
} 

당신이 기능 'afunction'위의 코드에서 보는 바와 같이 전화하고있다 변수 'variable1'과 'variable2'를 설정해야합니다. 나는 '함수'정의의 코드가 잘못되었다는 것을 알고 있지만 런타임 중에 variable1과 variable2의 값을 설정하는 방법이 필요합니다.

내 코드와 관련된 경우

, 나는 그냥 쓰기 응용 프로그램

+0

당신이 그것을 시도? 작동 했나요? –

+0

예 나는 나의 예에서 보여준 방법을 시도했으나 효과가 없다. 현재 범위에서 오류 '정의 또는 재 선언을 허용하지 않습니다.' – user2060711

+1

** 1 ** 선택한 C++ 교과서는 값을 변수에 할당하는 방법을 알려줍니다. ** 2 ** 왜 10 년 이상 오래된 컴파일러를 사용합니까? –

답변

1

을 개발하는 비주얼 스튜디오 6.0을 사용하고 있습니다 :

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 
관련 문제