PDA

View Full Version : سوال: ارور در برنامه و استفاده از کلاس ها؟



vb8334
پنج شنبه 23 شهریور 1391, 13:00 عصر
سلام

دوستان من زمانی که می خوام به کلاس person ایراد میگره؟

undefined reference to `Person::Person

اگه میشه این یه تیکه رو برام برطرف کنید
92818
مرسی

meisam12
پنج شنبه 23 شهریور 1391, 13:58 عصر
سلام دوست عزیز
فایلت را اصلاح کردم.
می توانی به این http://wdl.persiangig.com/pages/download/?dl=http://meisam12.persiangig.com/document/CPP.zip سایت مراجعه کنید.

vb8334
پنج شنبه 23 شهریور 1391, 20:12 عصر
دوست عزیز ممنون که کمک کردین

یه سوال من چطوری می تونم رشته رو به int و برعکس تبدیل کنم

نکته : منظورم اینطوریه 23 به "23" و برعکسش توجه کنید من به حروف نمیخوام

اینو میدونم که باید از sstream استفاده کنم

مرسی

amin1softco
پنج شنبه 23 شهریور 1391, 20:33 عصر
string Text = "456";//string containing the number
int Result;//number which will contain the result

stringstream convert(Text); // stringstream used for the conversion initialized with the contents of Text

if ( !(convert >> Result) )//give the value to Result using the characters in the string
Result = 0;//if that fails set Result to 0
//Result now equal to 456
+ (http://www.cplusplus.com/forum/articles/9645/)

R0nika
پنج شنبه 23 شهریور 1391, 21:09 عصر
سلام
براي تبديل يك رشته به int و برعكس ميتونيد از اين راه استفاده كنيد:
تبديل string به int :براي اينكار بايد يه آرايه از نوع int تعريف كنيد. حالا با قرار دادن يه for ميتونيد هر خونه ي آرايه تان را برابر با string قرار دهيد.. فقط بايد يه نكته را رعيت كنيد كه اينجا اوردم و براتون توضيح ميدم:


for(int i=0 ; i<10 ; i++)
num[i]=(int)str[i]-48;

در اينجا num همون آرايه از نوع int و str هم رشته است. من با يك حلقه هر كدوم از خانه هاي رشته را در آرايه ريختم ولي ما نميتونيم يه srtring را مساوي int قرار دهيم پس با استفاده از static_cast اون رو به int تبديل كردم. (همون (int) ) .خب حالا چون str ما از نوع string بوده پس هر مقداري كه داشته باشه برابر با كد اسكي اون مقدار است . مثلا اگه مقدار str ما برابر با 3 باشه اگه str رو با static_cast به int تبديل كنيم.. مقدار 51 را خوهيم داشت چون كد اسكي عدد 3 , 51 است . حالا ميتوني دليل اينكه چرا str[i](int) رو از 48 كم كردم رو متوجه شي. كد اسكي صفر 48 است . پس اگه ما كد اسكي عددي مثل 3 كه 51 است رو از 48 كم كنيم حاصل خود عدد خواهد بود . 51-48=3
تا ايتجا ما رشته مون رو به int تبديل كرديم ولي تو يه آرايه ريختيم . حالا ميخوايم آرايه مون رو تويه يه متغير از نوع int بريزيم .
كد اين قسمت رو هم برات ميذارم .


int n = 0;
int q=100;
for(int i=0 ;i<3 ; i++)
{
n+=(num[i]%10*q);
q=q/10;
}

اين رو هم اضافه كنم كه تعداد ارقام q بايد به اندازه ي تعداد خونه هاي string يا آرايه ات باشه.
با توجه به توضيحاتي كه دادم ميتوني با كمي تمركز و فكر برعكس اين قضيه يعني تبديل int به string رو خودت بنويسي .
اميدوارم برات مفيد بوده باشه.
موفق باشي.

hadi0x7c7
جمعه 24 شهریور 1391, 00:45 صبح
بهترین کار اینه:



string itos(int n)
{
stringstream s;
s << n;
return s.str();
}


string s = "123";
int n = atoi(s.c_str());

string num = itos(123);
cout << num << " " << n << endl;

vb8334
جمعه 24 شهریور 1391, 23:01 عصر
دوستان من کد تبدیل عدد به رشته رو نوشتم ولی یه سری ایراد داره ؟

ممنون میشم یه نگاه بهش بندازین

92879

مرسی

meisam12
شنبه 25 شهریور 1391, 13:55 عصر
شما الگو را درست تعریف نکردید.
مثلاً یکی از تعاریف صحیح :
Main.cpp

#include "stdafx.h"
#include <iostream>
#include "Person.h"
#include "PersonSerializer.h"
#include "MyConvert.h"


using namespace std;

void main()
{

int id;
int age;

string id0;
string age0;

Person *p=new Person();

id=p->Id=1;
id0=p->Id=1;
p->FirstName="asghar";
p->LastName="farhadi";
age=p->Age=50;
age0=p->Age=50;

cout<< m.IntToStr(id,age);

PersonSerializer ps;
cout<<ps.Serialize(p);
}



MyConvert.h

#ifndef MYCONVERT_H_INCLUDED
#define MYCONVERT_H_INCLUDED
#include <sstream>
#include <iostream>
using namespace std;

template<int i>
class MyConvert
{
public:
string IntToStr();
string IntToStr(int Id,int Age )
{
stringstream ss1;
stringstream ss2;

ss1 << Id;
ss2 << Age;

return ss1.str();
return ss2.str();
}
};

MyConvert<1> m;


#endif // MYCONVERT_H_INCLUDED