2013-04-05 35 views
1

我有一個具有結構的類。我如何創建這種結構類型的向量?如何聲明一個類的結構向量

這裏是例如:

class A { 
public: 
    struct mystruct { 
     mystruct (int _label, double _dist) : label(_label), dist(_dist) {} 
     int label; 
     double dist; 
    }; 
} 

現在,在這個類 「A」 有如下的功能。

myfunc (vector<mystruct> &mystry); 

所以我的問題是我需要用結構向量調用此函數。我該如何申報?如你,你應該MYSTRUCT罰款後聲明MYFUNC

std::vector<A::mystruct> 
+0

你必須包含'struct'所在的所有命名空間和類作用域。 – andre 2013-04-05 13:02:44

回答

3

使用範圍操作::

+0

感謝您的回覆。我創建了一個向量並將其傳遞給函數。我收到錯誤「文件無法打開寫入!」 – 2vision2 2013-04-05 13:35:03

+0

@ 2vision2該錯誤與您使用該矢量完全無關。你應該把它作爲一個單獨的問題發佈。 – 2013-04-05 13:57:53

1
class A 
{ 
public: 
    struct mystruct 
    { 
     mystruct (int _label, double _dist) : label (_label), dist (_dist) {} 
     int label; 
     double dist; 
    }; 

    void myfunc(std::vector<mystruct> &mystr); 
} 

只要:

1

當你聲明 A的方法,mystruct已經在範圍,所以你可以使用它沒有資格:

class A { 
public: 
    struct mystruct { 
     mystruct (int _label, double _dist) : label(_label), dist(_dist) {} 
     int label; 
     double dist; 
    }; 

    void myfunc(std::vector<mystruct> &); 
} 

但是當你調用它,你呼叫參數的類型取決於什麼你在哪裏:

void free_function() { 
    A a; 
    std::vector<A::mystruct> arg; 
    a.myfunc(arg); 
} 

void A::another_method() { 
    std::vector<mystruct> arg; 
    this->myfunc(arg); 
} 
+0

然而,在類內部使用這個指針來調用成員函數是相當無用的。只需使用:myfunc(arg)。 – David 2013-04-05 13:14:26

+0

它沒有任何東西,但有時閱讀更清晰。在這裏,我想強調自由函數和方法之間的對稱性。 – Useless 2013-04-05 13:15:37