2013-04-05 5 views
1

У меня есть класс со структурой в нем. Как создать вектор этого типа структуры?Как объявить вектор структуры класса

Вот пример:

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

Теперь в этом классе «А» есть функция, как показано ниже.

myfunc (vector<mystruct> &mystry); 

Так что мой вопрос: мне нужно вызвать эту функцию с помощью вектора структуры. Как я могу объявить это?

+0

вы должны включать все пространства имен и класс, определяющий область 'struct' находится в – andre

ответ

3

Используйте оператор области видимости :::

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

Спасибо за ваш ответ.. Я создал вектор и передал его функции. Я получаю сообщение об ошибке «Файл не может быть открыт для записи!» – 2vision2

+0

@ 2vision2 Эта ошибка абсолютно не имеет отношения к использованию вами вектора. Вы должны опубликовать его как отдельный вопрос. –

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); 
} 

Пока вы объявляете MyFunc после MyStruct вы должны быть хорошо.

1

Когда вы объявить сам метод А, 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

+0

Это не _do_ ничего, но иногда это яснее читать. Здесь я хотел подчеркнуть симметрию между свободной функцией и методом. – Useless

Смежные вопросы