no viable conversion from 'TObject *' to 'TDirectory'

تاریخ انتشار:1398-06-23
تاریخ بروزرسانی: 1398-06-23
تعداد بازدید: 100



no viable conversion from 'TObject *' to 'TDirectory'

 در بسیاری از برنامه های نوشته در GEANT4 فراخوانی اطلاعات به صورت زیر نوشته شده است.

TFile f("radioprotection_NEW.root");
TDirectory* dir = f.Get("radioprotection_ntuple");
TNtuple * ntuple1 = (TNtuple*)dir->Get("101");   

هنگام اجرای این دستور پیام زیر رخ می دهد.

no viable conversion from 'TObject *' to 'TDirectory'

کد چه پردازشی انجام می دهد؟

فایل radioprotection_NEW.root   حاصل اجرایی برنامه میکرودزیمتری در GEANT4 است. پس از اجرای برنامه درون آن اطلاعات در مسیر radioprotection_ntuple ذخیره می شود. بنابراین ابتدا فایل radioprotection_NEW.root را به عنوان متغیر f از جنس TFile معرفی می کنیم. حال می گوییم که مسیر radioprotection_ntuple  را فراخوانی و به عنوان متغییر dir ذخیره کن.

مشکل این است که در root بین متغییر هایی از جنس * و بدون * فرق می کند. بنابراین متغییری از جنس بدون * را وقتی میخواهد به متغییری به جنس با * تبدیل کند خطا می می دهد. برای حل این مشکل دستور را به صورت زیر باز نویسی می کنیم.

TFile f("radioprotection.root");
TDirectory* dir =(TDirectory*) f.Get("radioprotection_ntuple"); 

در این حالت ابتدا متغییر به حالت * دار تبدیل می شود و توسط فرآیند انتصاب با استفاده از عملگر = صورت میگیرد.

 

برای مطالعه در باره موضوعات زیر روی هر عنوان کلیک کنید.
conversion error in root
plot in root
root
پیوستی برای این مطلب وجود ندارد
درباره نویسنده

من رسول شامحمدی هستم . تخصص من برنامه نویسی و محاسبات مونت کارلو هست. همیشه سعی میکنم در اینجا تجارب خودم را انتقال بدم. شماره تلفن من 09372846654 هست برای سفارش کار یا مشاوره

نظرات کاربران
اولین نفری باشید که نظر میدهید

همکاری با ما

با سالها تجربه آماده ایم با شما همکاری گسترده ای داشته باشیم. همکاری با ما می تواند در قالب موارد زیر باشد
1) مشاوره در انجام تز دکتری در زمینه محاسبات هسته ای
2) مشاوره در انجام پایان نامه دوره کارشناسی ارشد در زمینه محاسبات هسته ای
3) ارائه مشاوره در جهت انجام پروژه های صنعتی
4) انجام طراحی ها و محاسبات مختلف
5) برگزاری دوره های تخصصی آموزش کد های هسته ای
6) ...
 با ما تماس بگیرید
09372846654-rasul.shamohamady@gmail.com
 

ما در شبکه های اجتماعی دنبال کنید.

گروه تلگرامی ویژه رفع اشکال کد های هسته ای و نرم افزار ها

این گروه صرفا برای بحث در باره کد ها و نرم افزارهای هسته ای می باشد لذا از بحث های نامرتبط خود داری فرمایید و با معرفی گروه به دوستان خود در مفید بودن بیشتر گروه همیار ما باشید. برای عضو شدن در این گروه تلگرامی با شماره 09372846654 در تلگرام پیام دهید.

کانال وب سایت مهندس شامحمدی

در این کانال آخرین اخبار منتشر شده در سایت نشر داده می شود.برای عضو شدن در این گروه تلگرامی با شماره 09372846654 در تلگرام پیام دهید

کانال آپارت ما

این کانال متعلق به وب سایت مهندس شامحمدی می باشد. تنها قسمتی از ویدئو های آموزشی در اینجا نشان داده است.