2017-04-12 90 views
-2

我有一個類和一個命名空間,我需要從另一個文件訪問類的數據。 例子:理解C++類的麻煩

namespace A { 
    struct SMS{ 
     string id; 
     Messages msg; //(an array of strings) 
    }; 
} 

class Users{ 
public: 
//ALL THE FUNCTIONS HERE TO MANAGE THE USER 
private: 

struct User{ 
     string id_user; 
     SMS sms; 
     }; 
}; 

所以現在我要訪問sms以及陣列中,但我不能找到一種方法。 它應該是這樣的嗎?

User ada_lovelace; 
return ada_lovelace.sms.msg[1]; 

或:

return ada_lovelace.A::sms.msg[1];? 
+0

'A :: sms'會在'A'中尋找'sms'。 – chris

+0

你需要顯示一個更完整版本的'用戶'。現在我們只知道'User'包含一個私有結構。 – NathanOliver

+0

只要你聲明用戶'A :: User ada_lovelace;',你應該可以訪問'ada_lovelace.sms.msg [1];'。此外,C++使用關鍵字'class',而不是'Class'。 – Rubens

回答

0

答案取決於你要去哪裏定義和使用ada_lovelace。如果你要聲明它的Users類的方法中的一種或作爲類中的一員,你應該定義用戶爲:

struct User{ 
    string id_user; 
    A::SMS sms; 
    }; 

,你應該能夠使用

return ada_lovelace.sms.msg[1]; 

但是,如果你想使用ada_lovelace ouside Users類的,你必須定義User爲大衆創造這樣的對象:

Users::User ada_lovelace; 
-2

檢查下面的實現

namespace A { 
    struct SMS{ 
     string id; 
     Messages msg; //(an array of strings) 
    }; 
} 

//Namespace A ends here so if you want to use SMS in the class u need to mention it as A::SMS sms 

class Users{ 
public: 
//ALL THE FUNCTIONS HERE TO MANAGE THE USER 
private: 

struct User{ 
     string id_user; 
     A::SMS sms; // Corrected here ------------ 
     }; 
};