2013-08-16 66 views
2

我有結構化的,我解決不了,我想從一類到另一個類通過這個名單列表的問題,這是我的代碼:轉換結構列表C++傳遞一個列表,從一類到另一個

ClassA.h

#include <list> 

class ClassA 
{ 
public: 
    struct MyStruct 
    { 
    int a; 
    int b; 
    }; 

    std::list<MyStruct> myList; 
    void fillList(); 
} 

ClassA.ccp

#include "ClassA.h" 
#include <fstream> 
#include <iostream> 

using namespace std; 

void ClassA::fillList() { 
    MyStruct c; 
    c.a = 1; 
    c.b = 2; 
    myList.push_back(c); 
} 

ClassB.h

#include <list> 

class ClassB 
{ 
    struct MyStruct 
    { 
    int a; 
    int b; 
    }; 

    std::list<MyStruct> myListB; 
    public: 
     ClassB(std::list<MyStruct> l); 
} 

ClassB.ccp

#include "ClassB.h" 
#include <fstream> 
#include <iostream> 

using namespace std; 

ClassB::ClassB(std::list<MyStruct> l) 
{ 
    myListB = l; 
} 

main.ccp

#include <iostream> 
#include "ClassA.h" 
#include "ClassB.h" 

using namespace std; 

int main() 
{ 
ClassA a; 
a.fillList(); 

ClassB(a.myList); //I receive the error here 
} 

我收到錯誤的位置我這裏上面發表評論,誤差爲no matching conversion for functional-style cast from'std::list<MyStruct>' to ClassB,我怎麼錯了?我怎麼能通過這兩個班級之間的名單?請幫忙!

編輯: 我一樣a.lasram在回答暗示所以現在我有這樣的:

#include <list> 
#include "ClassA.h" //i add this beacuse ask me and now i have a new error 
class ClassB 
{ 
typedef ClassA::MyStruct MyStruct; 

std::list<MyStruct> myListB; 
public: 
    ClassB(std::list<MyStruct> l); 
}; 

此編輯後,舊的錯誤是解決了,但這裏存在新的:

ClassA.h

#include <list> 

class ClassA //<-- here the error is: Redefinition of ClassA 
{.... 
.... 
} 

我怎麼能解決?請幫助...

編輯2: 我解決了第二個錯誤與此:

#ifndef __Terzo_Progetto__ClassA__ 
#define __Terzo_Progetto__ClassA__ 

#include <list> 

class ClassA 
{... 
} 

#endif 
+0

不用謝了!現在我已經這樣做了... – Piero

回答

2

ClassA::MyStructClassB::MyStruct是不同的。您可以通過聲明ClassB解決此問題,如下所示:

class ClassB 
{ 
    typedef ClassA::MyStruct MyStruct; 

    std::list<MyStruct> myListB; 
    public: 
     ClassB(std::list<MyStruct> l); 
}; 
+0

感謝您的答案,我已經添加了該行,並且我也寫了#include「ClassA.h」,但ClassA上有一個新錯誤{..我收到ClassA的重新定義。 ..爲什麼? – Piero

+0

我已編輯我的問題,請看看... – Piero

相關問題