#ifndef SET_H_INCLUDED
#define SET_H_INCLUDED
class Set{
public:
int m_Set[9];
int up;
Set(){m_Set[9]={0,};up=0;} //얘가 문제입니다..
bool insert(int num)//입력받은 수를 m_Set[up++]에 저장시킴
{
m_Set[up++]=num;
}
};
#endif
==================헤더파일=================
#include <iostream>
#include \"Set.h\"
#include <conio.h>
using namespace std;
int main(){
Set Seta;
Seta.insert(5);
Seta.insert(6);
cout<<Seta.m_Set[0]<<endl;
cout<<Seta.m_Set[1]<<endl;
cout<<Seta.up<<endl;
getch();
return 0;
}
11 expected primary-expression before \'{\' token
11 expected `;\' before \'{\' token
클래스 생성자 쪽에서 에러나는데, 한번 m_Set[9]={0,};을 지우고 실행해주고 다시 넣고 실행시키면 실행됩니다.
다시 확인해보니... m_Set[9]={0,};을 넣던 안넣던 m_Set 배열은 초기화가 안되네요..
m_Set[9]배열을 시작할때 0으로 몽땅초기화 시키고 시작하고싶은데 우찌해야하나요
static 지시자 넣으면 0으로 초기화 되지 않음? ㅋㅋㅋ
...생성자에 그런식으로 넣는다고 초기화 되지 않는다. 저건 선언하고 할당하고 같이 붙어져 있을때 컴파일러가 알아서 해주는 거라서
고로 배열을 클래스에서 초기화하려면 생성자에서 일일히 for문 돌거나 memset, copy 를 하면 되는데 for문 자체도 저정도는 컴파일러쨩이 알아서 해주지 않을까 싶긴한데, 걍 뉴비라면 for문 돌리고. 속도가 문제가되면 프로파일링 이것만 기역하면된다.
뉴비들 문제가 지딴에는 최적화 한다고 어째 저째 해려고하는데, 걍 무시하고 단순하게 가라. c++ 컴파일러도 원래 무식한넘이고 최적화도 지좆대로 인간이 생각하지못한 형식으로 멋대로 한다. 그니께 단순하게 짜고 프로파일 돌리고 하면됨 알간?
m_Set[9]={0,}; 이게 뭐냐. int m_Set[9]={0,};이렇게 초기화는 가능하지만 이미 선언된 상태에서 m_Set[9]={0,};이렇게 하는건 안된다. 의미가 전혀 다르지.
for문으로 하니 되네요. 감사합니다.