2016-04-05 15 views
0

ben bu sınıfı oluşturma:Dll ihracat arkadaşı operatör >>

///> MyObject.h file 
class __declspec(dllexport) CMyObject 
{ 
public: 
    int m_Intero; 
public: 
    CMyObject(); 
    ~CMyObject(); 
public: 
    friend std::wifstream& operator>>(std::wifstream& is, CMyObject& eprt); 
} 
///> MyObject.cpp 
std::wifstream& operator>>(std::wifstream& is, CMyObject& myobj) 
{ 
    if (is.is_open()) 
     ///> Input operations. 

    return is; 
} 

Kütüphaneden derlemek zaman hiç hata olsun, ama son projesinde Kitaplığımı kullandığınızda bu hatayı alıyorum:

Her nasılsa, operatörümün işlevinin dışa aktarılması gerektiğini belirtmem gerekiyor.

Kodumu nasıl değiştirmeliyim?

cevap

0

Birkaç yönleri: Derslere ihraç edilmektedir

  • değil, küresel (arkadaş) fonksiyonu. Derleyicinin küresel işlevin (operatör aşırı yükü) bir arkadaş olduğunu bilmesine izin veriyorsun. dışa aktarma işlevini dışa aktarmanız gerekir.
  • C++ nesneleri söz konusu olduğunda, bu tür işlevleri dışa aktarmamalısınız çünkü derleyici farklılıkları, sınıfların farklı boyutlara sahip olmasını sağlar.
+0

İkinci noktadan itibaren, operatör >> dışa aktarma yapmam gerektiğini ve dosyadan veri yüklemek için kullanamayacağımı varsayalım. Bu doğru mu? – IssamTP

+0

DÜZENLEME: Bir "LoadFromFile" işlevi yaptım ve burada >> operatörü kullandım. Doğru? – IssamTP

İlgili konular