정적배열을 선언함과 동시에 값을 할당하기가 안되네요...

dltkddyd의 이미지

myType는 구조체입니다.

struct myType {
int x;
int y;
char* name;
}

그리고 다음과 같이 myType형의 배열을 선언하고 값을 동시에 할당했는데, 컴파일 에러가 발생합니다.

myType mydata[15]={{10,30,"김훤칠"},{110,120,"Goal"},{250,235,"Target"},{335,380,"Guest"},{444,490,"Ring"},{555,580,"Chick"},{660,680,"Tick"},{724,750,"Cloud"},{860,867,"CCL"},{990,980,"Beside Us"},{1102,1020,"Go"},{1130,1135,"Fight"},{1250,1280,"Shot"},{1340,1369,"Fire Up"},{1490,1456,"Walk"}};

어디가 잘못된 건가요?

planetarium의 이미지

에러메시지를 보여주세요.

myType mydata[15] 대신 struct myType mydata[15] 로 바꿔보셨나요?

dltkddyd의 이미지

Collect는 myType과 같습니다. 다음과 같은 진술문이 있기 때문이죠.

typedef Collect myType;

그리고 에러메시지는 아래와 같고요.

note: candidates are: Collect::Collect(Collect&)
note: Collect::Collect(int, int, const char*)
note: Collect::Collect()
error: no matching function for call to 'Collect::Collect(myType)'

뭐 대충 생성자가 없다는 말로 들리는데, 위의 배열하고 생성자가 어떤 연관이 있길래 이런 에러 메시지가 뜰까요? 생성자를 추가로 더 만들어야 될까요? 어떤 생성자를 만들어야 할지 모르겠네요...

본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.

kukyakya의 이미지

사용하시는 컴파일러와 실제 소스코드를 올려주시는 것이 도움이 될 것 같습니다.

gcc 4.6에서 테스트한 결과로는 char*를 const char*로 수정 후 컴파일하는데에 문제가 발생하지 않았습니다.

혹시 Collect가 typedef된 게 아니라 같은 모양의 다른 클래스로 정의된 것 아닌가요?

dltkddyd의 이미지

왜 안될까요?

본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.

planetarium의 이미지

위 메시지를 보니 그렇게 했을때는 에러 메시지가 다를것 같은데요... 에러 메시지좀 보여주시죠. 같은말 하기 좀 답답하네요.

익명 사용자의 이미지

구조체 선언을 다음처럼 해보세요.
typedef struct
{
int x;
int y;
char *name;
} myType;

lisonhua의 이미지

선언과 할당이 동시에 해서 생기는 오유는 아닙니다.

구조체 myType에 name변수를 Char*로 하면 포인터만 할당되고 실지변수영역은 생기지 않지요.
그런데 여기에 name = "김훤칠" 이라는 값이 대입되였으니 오유가 생길수 밖에...

다시말해 이런 에러입니다.
char* lpName = "HongKilDong"; // 에러
char name[20] = "HongKilDong" ; // 성공

알만하죠.
이렇게 해야 해요.

struct myType {
int x;
int y;
char name[MAX_PATH];
}

name변수의 크기는 자기에게 알맞게 정하면 되고요.

planetarium의 이미지

인용:
char* lpName = "HongKilDong"; // 에러

해보셨나요? 에러 안납니다. 한번 해보세요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.