c++ Array 초보 간단한 질문드립니다.

조회수 440회
#include <iostream>
#include <string>
using namespace std;

int main() {

    int arrayName[3] = { 1, 2, 3 };
    cout << arrayName[2] << endl;
    cout << "Array size is " << **arrayName**.size() << endl;
    string input_string;
    cout << "Type something: ";
    getline(cin, input_string);
    cout << "Hello, World." << endl;
    cout << "This is what you typed: ";
    cout << input_string << endl;
    input_string.erase(input_string.begin() + 1, input_string.end() - 1);
    cout << input_string;


    return 0;
}

여기서 위에 표시된 arrayName 부분에 빨간줄이 쫙 그이면서 자꾸 에러가 뜨는데 왜 그런것인가요?

답변주시면 정말 감사하겠습니다.

1 답변

  • arrayName이 일반 배열이기 때문입니다.

    a.size()와 같이 사용하기 위해서는 a가 클래스형 변수여야 하고, 멤버 함수 중에 size() 함수가 있어야 합니다.

    cout << "Array size is " << **arrayName**.size() << endl;

    일반 배열의 길이를 출력하고 싶다면 위의 코드를 아래처럼 바꾸어 보세요.

    cout << "Array size is " << sizeof(arrayName)/sizeof(arrayName[0]) << endl;

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • a.size()와 같이 사용하기 위해서는 a가 클래스형 변수여야 하고, 멤버 함수 중에 size() 함수가 있어야 합니다. 혹시 이 부분 좀 더 쉽게 설명 부탁드려도 될까요? 잘 이해가 가지 않아서요. 감사합니다. 알 수 없는 사용자 2020.12.18 12:43
    • 클래스에 대한 기본적인 내용을 말씀드린 것인데 잘 이해가 안 가신다면, 보고 계신 책의 구조체 챕터를 먼저 읽으시고, 그 다음에 클래스 챕터를 읽으시면 아마도 이해가 되실 거에요. 보통 string형 변수나 벡터형 변수등에서 멤버함수인 .size() 함수를 자주 사용하는데요. string형이 일반 자료형이 아니고, 클래스여서 그렇습니다. 알 수 없는 사용자 2020.12.18 14:30
    • 답변 정말 감사합니다. 많은 도움 됬스니다. 알 수 없는 사용자 2020.12.18 15:34

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)