2013-06-18 2 views
-2
using namespace std; 

class Student{ 
    public: 
     Student(int test) 
     { 
      if(test == key) 
      {cout << "A student is being verified with a correct key: "<< test << endl;} 
     } 
     private: 
     int key= 705; 
}; 



int main() 
{ 
    int testkey; 
    cout << "Enter key for Bob: "; 
    cin >> testkey; 

    Student bob(testkey); 
} 

그래서 나는 그것을 실행하려고했지만 C++에서 "키를 정적으로 만드는 오류"라는 값을 할당 할 수 없다고 말합니다. 나는 그것이 무엇을 의미하는지 :(C++ 클래스의 개인 변수에 값을 할당 할 수없는 이유는 무엇입니까?

+0

@LuchianGrigore하지만 내 GCC에서 작동, 어떤 일이이 코드를 잘못 – johnchen902

+0

내가 프로그래밍에 정말 새로운 해요 당신이 지적시겠습니까 구문이 잘못 어디서?. 나는 당신이 무엇을 얻는 지 믿습니다. 나는하려고 애썼다. 코드 블록에서 작동하지 않습니다 – user2477112

+0

'int key = 705;'를 C++ 11이 클래스 선언에서 작동하도록해야합니다. – billz

답변

1

당신이 C++ 03에서 같은 클래스에 변수를 할당하고 C++에서 11 (here 또는 here 참조) 할 수없는 아무 생각이 없습니다.

을하지만, 당신은 같은 생성자에서 그것을 할 수 있습니다

class Student{ 
public: 
    Student(int test) 
    : key(705) { 
    // ^^^^^^^^ 

    // or if you want to init it with the parameter test 
    // key(test) { 

     if(test == key) 
     {cout << "A student is being verified with a correct key: "<< test << endl;} 
    } 
private: 
    int key; 
}; 
+0

흠, 그건 몰랐습니다. 정말 고맙습니다! 작동했습니다. – user2477112

+2

C++ 03이 아닌 선언 시점에서 비 정적 데이터 멤버를 초기화 할 수 있습니다. – juanchopanza

+0

@juanchopanza 조언을 주셔서 감사합니다. 나는 나의 대답을 업데이트했다. – user1810087

관련 문제