652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
1

Request for member '.' in '.', which is of non-class type

06.08.2015, 07:38. Показов 3762. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте форумчане.
Возникает ошибка при компиляции в методе foo()
C++
1
2
3
4
void foo()
{
    ptr_.modify()->*member_.clear();
}
Код
request for member 'clear' in '((G::Field<G::Game, Wt::Dbo::collection<Wt::Dbo::ptr<G::Social> >, Wt::WSelectionBox, G::Social>*)this)->G::Field<G::Game, Wt::Dbo::collection<Wt::Dbo::ptr<G::Social> >, Wt::WSelectionBox, G::Social>::member_', which is of non-class type 'Wt::Dbo::collection<Wt::Dbo::ptr<G::Social> > G::Game::*'
                 ptr_.modify()->*member_.clear();
  1. Член класса ptr_ типа Dbo:: ptr<Game> аналог std::shared_ptr<Game>
    Его метод Dbo:: ptr::modify() аналог std::shared_ptr::get()
  2. Член класса member_ типа Dbo::collection<Dbo:: ptr<Social>> аналог std::vector<std::shared_ptr<Social>>
Класс упростил для читабельности, возможно подскажите в чем ошибка

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
template< typename DboModel,
          typename FieldType >
class Field : public FieldInterface
{
public:
    Field(Dbo::ptr<DboModel> ptr, FieldType DboModel::* member)
        : ptr_(ptr)
        , member_(member)
    {
 
    }
 
    void foo()
    {
        ptr_.modify()->*member_.clear();
    }
private:
    Dbo::ptr<DboModel> ptr_;
    FieldType DboModel::* member_;
};
Создаю класс так:
C++
1
2
3
4
5
// передаю в функцию
const Dbo::ptr<Game>& ptr
//...
Field* field = new Field<Game, Dbo::collection< Dbo::ptr<Social> >>(ptr, &Game::socials);
//...
С уважением QVO.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.08.2015, 07:38
Ответы с готовыми решениями:

Request for member which is of non-class type c++ ошибка
#ifndef MAP_H #define MAP_H template &lt;typename T1, typename T2&gt; class Map { T1 *key; ...

Create a programm that creates an object of created class Time and tests the member functions of class
Time Class Create a class called Time that might be used to represent time. 1. Your...

Ошибка E2333: Class member declared outside its class
Доброго времени суток,подскажите в чём дело?...

Ошибка request for member 'x' in
Здравствуйте,почему не работает код: #include &lt;iostream&gt; #include &lt;queue&gt; #include &lt;string&gt;...

3
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,259
Записей в блоге: 7
06.08.2015, 07:55 2
Если так?
C++
1
2
3
4
// black magic
auto p = ptr_.modify();
auto m = p->member_;
(p->*m).clear()
1
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
06.08.2015, 08:10  [ТС] 3
Cra3y, очень странно, такой код компилируется:
C++
1
2
            auto m = ptr_.modify()->*member_;
            m.clear();
0
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,259
Записей в блоге: 7
06.08.2015, 08:18 4
Лучший ответ Сообщение было отмечено QVO как решение

Решение

QVO, приоритет операторов и все такое
только надо использовать ссылку, иначе будет очищаться копия(да, auto оно такое... подлое)
C++
1
2
3
4
            auto& m = ptr_.modify()->*member_;
            m.clear();
// или взять в скобки
(ptr_.modify()->*member_).clear();
1
06.08.2015, 08:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.08.2015, 08:18
Помогаю со студенческими работами здесь

Request for member Ошибка
Пользуюсь CodeBlocks и вылезает ошибка :request for member 'key' in something not a structure or...

[Error] request for member 'next' in '* q->LinkQ::rear'
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;string.h&gt; typedef struct { char *base;...

Ошибка: request for member 'move' is ambiguous
Здравствуйте. есть класс: class card : public QGLWidget, public QPushButton Наследую QPushButton...

Как исправить ошибку error C2230: "a member function of a managed class cannot return a non-managed class"
Здравствуйте! Помогите пожалуйста исправить ошибку error C2230: 'GenerateRandomHReal' : a...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru