مشکلات تعریف متغییر static در کلاس در زبان ++C
سلام
1) چرا نمیشه متغییر استاتیک رو در همون تعریف کلاس مقدار دهی کرد؟(مثلا متغییر STATIC رو در قسمت PUBLIC که تعریف میکنم اگه مقدار اولیه بهش بدم کامپایلر ارور میده ولی برای متغییر های معمولی این مشکل وجود نداره)
2) چرا نمیشه مقدار متغییر های STATIC رو در پروژه به کمک :: خوند؟
class MyClass { public:
MyClass(void);
int Num1 = 2;
static int Num2;
private:
};
نقل قول: مشکلات تعریف متغییر static در کلاس در زبان ++C
نقل قول:
نوشته شده توسط
md3848
سلام
1) چرا نمیشه متغییر استاتیک رو در همون تعریف کلاس مقدار دهی کرد؟(مثلا متغییر STATIC رو در قسمت PUBLIC که تعریف میکنم اگه مقدار اولیه بهش بدم کامپایلر ارور میده ولی برای متغییر های معمولی این مشکل وجود نداره)
2) چرا نمیشه مقدار متغییر های STATIC رو در پروژه به کمک :: خوند؟
class MyClass { public:
MyClass(void);
int Num1 = 2;
static int Num2;
private:
};
سلام
برای اینکه شما بتونید یک متغیر رو به صورت استاتیک تعریف کنید به روش زیر عمل کنید:
const static int Num2 = 2;
حتی میتونید از روش های پیش پردازنده ها استفاده کنید.
#define Num2 2;
نقل قول: مشکلات تعریف متغییر static در کلاس در زبان ++C
ممنون از شما - خب const تعریف کنم که دیگه نمیشه مقدار متغییر رو تغییر داد که - میشه؟
در ضمن من هنوز تو دسترسی به متغییر static داخل کلاس مشکل دارم و visual studio ارور میده.
فایل پروژه
#include "stdafx.h"#include <iostream>
#include "Ali.h"
MyClass Obj1;
int main(void)
{
std::cout << MyClass::Num2;
while (1);
return 0;
}
فایل ALI.H
class MyClass {public:
MyClass(void);
int Num1;
const static int Num2;
static int Func1(void);
private:
};
فایل ALI.cpp
#include "stdafx.h"#include "Ali.h"
MyClass::MyClass() {}
نقل قول: مشکلات تعریف متغییر static در کلاس در زبان ++C
نقل قول:
نوشته شده توسط
md3848
ممنون از شما - خب const تعریف کنم که دیگه نمیشه مقدار متغییر رو تغییر داد که - میشه؟
در ضمن من هنوز تو دسترسی به متغییر static داخل کلاس مشکل دارم و visual studio ارور میده.
فایل پروژه
#include "stdafx.h"#include <iostream>
#include "Ali.h"
MyClass Obj1;
int main(void)
{
std::cout << MyClass::Num2;
while (1);
return 0;
}
فایل ALI.H
class MyClass {public:
MyClass(void);
int Num1;
const static int Num2;
static int Func1(void);
private:
};
فایل ALI.cpp
#include "stdafx.h"#include "Ali.h"
MyClass::MyClass() {}
فایل .h
#ifndef MYCLASS_H
#define MYCLASS_H
class MyClass {public:
MyClass(void);
int Num1;
static int const Num2;
static int Func1(void);
private:
};
#endif // MYCLASS_H
فایل .cpp
#include "myclass.h"
#include <iostream>
MyClass::MyClass(){}
int const MyClass::Num2 = 10;
و در نهایت main
std::cout << MyClass::Num2;