C++에서 각 객체마다 하나의 변수를 공유할수 있을까요?

seungrye의 이미지

간단히

class A
{
  public:
    int a;
    int ret_a(){return a;}
    int set_a(int b){a=b;}
}
...
void main()
{
  A a;
  A b;
 
  a.set_a(9);
  cout<<b.ret_a()<<endl;
}
 
--결과--
9

가 되도록 할수 있을까요?[물론 위의 소스를 완전 분해 재결합 '안'해도 상관 없습니다..-.-;]

질문의 요지는 하나의 클래스가 있고, 그 클래스로 두개 이상의(어쩌면 2-30개 이상;;) 객체를 만든다고 할때,
클래스 내에 선언해둔 어떤 변수(위의 코드에서는 a)를 모든 객체에서 공통으로 사용할수 있는 방법이 있는가?
입니다. [학교 숙제는 아닙니다..-.-;;;]

meteors의 이미지

static int a;
로 만들면 원하는 효과를 낼 수 있습니다.

seungrye의 이미지

main.o(.text$_ZN1A5ret_aEv[A::ret_a()]+0x4):main.cpp: undefined reference to `A::a'
main.o(.text$_ZN1A5set_aEi[A::set_a(int)]+0x7):main.cpp: undefined reference to `A::a'
collect2: ld returned 1 exit status

요런 에러가 떠서..-.-;;

return a 를
return A::a 로

바꿔 보기도 했지만..

뭔가 동일한 에러로군요..-.-;;;

아.. 구글에서 물어봐야 하나??;

cinsk의 이미지

에러 내용을 보면 static member를 선언만 하고, 정의를 하지 않은 것 같습니다. static member는 따로 정의를 해 주어야 합니다. 예를 들면:

class foo {
public:
  static int our_data;
  // ...
};
 
int foo::our_data;

seungrye의 이미지

클래스 내부의 스태틱 변수는 그렇게 쓰는 것이었군요...

외부에 정의를...;;;

감사합니다..(__)

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.