강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

smile2000님의 프로필 이미지
smile2000

작성한 질문수

홍정모의 따라하며 배우는 C++

구초체 초기화에 있어서 비주얼 스튜디오에서는 되는데, 리눅스에서는 에러가 나는 이유를 알고 싶습니다.

작성

·

338

0

#include <iostream> using namespace std; struct { int number; char name[10]; char phone_number[15]; int age; }typedef Employee; int main() { Employee employee[10]; employee[0] = { 1, "test1","010-5555-6666",30 }; int i; for (i = 0; i < 10; i++) { if (employee[i].age >= 20 && employee[i].age <= 30) { std::cout << employee[i].name << std::endl; } } return 0; }
 
컴파일
g++ a.cpp -std=c++11
 
에러
a.cpp: In function ‘int main()’:
a.cpp:13:14: error: no match for ‘operator=’ (operand types are ‘Employee’ and ‘<brace-enclosed initializer list>’)
employee[0] = { 1, "test1","010-2222-3333",25 };
 

답변 1

0

안녕하세요 :)

 

음.. 코드를 다시 확인해보시겠어요?

제시해 주신 다음 코드를 제가 g++로 빌드했을 때에는 문제없이 빌드됩니다.

 

#include <iostream>
using namespace std;

struct {
        int number;
        char name[10];
        char phone_number[15];
        int age;
}typedef Employee;

int main() {

        Employee employee[10];

        employee[0] = { 1, "test1","010-5555-6666",30 };
        int i;

        for (i = 0; i < 10; i++) {
                if (employee[i].age >= 20 && employee[i].age <= 30) {
                        std::cout << employee[i].name << std::endl;
                }
        }

        return 0;
}

 

 빌드 결과는 다음과 같습니다. 

 

minchul@minchul:~/workspace/source$ g++ foo.cpp
minchul@minchul:~/workspace/source$ ./a.out
test1
minchul@minchul:~/workspace/source$ g++ foo.cpp -std=c++11
minchul@minchul:~/workspace/source$ ./a.out
test1

 

smile2000님의 프로필 이미지
smile2000

작성한 질문수

질문하기