Аватар для Shooter85
0 / 0 / 0
Регистрация: 18.07.2023
Сообщений: 27

Не видно класс при компиляции . is not a member of

28.07.2023, 19:28. Показов 10623. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Надеюсь, что пишу в нужный раздел.
Пытаюсь протестировать подключение к Sqlite3 на базе примера от фреймворка Wt, но возникает ошибка.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <Wt/Dbo/Dbo.h>
#include <string>
 
namespace dbo = Wt::Dbo;
 
enum class Role {
    Visitor = 0,
    Admin = 1,
    Alien = 42
};
 
class User {
public:
    std::string name;
    std::string password;
    Role        role;
    int         karma;
 
    template<class Action>
    void persist(Action& a)
    {
        dbo::field(a, name,     "name");
        dbo::field(a, password, "password");
        dbo::field(a, role,     "role");
        dbo::field(a, karma,    "karma");
    }
};
 
 
void run()
{
    /*
     * Setup a session, would typically be done once at application startup.
     */
    auto sqlite3 = std::make_unique<Wt::Dbo::backend::Sqlite3>("blog.db");
    //auto sqlite3 = dbo::make_ptr<Wt::Dbo::backend::Sqlite3>("blog.db");
    dbo::Session session;
    session.setConnection(std::move(sqlite3));
 
    session.mapClass<User>("user");
 
    /*
     * Try to create the schema (will fail if already exists).
     */
    session.createTables();
 
    /*
     * A unit of work happens always within a transaction.
     */
    dbo::Transaction transaction(session);
 
    auto user = std::make_unique<User>();
    user->name = "Joe";
    user->password = "Secret";
    user->role = Role::Visitor;
    user->karma = 13;
 
    dbo::ptr<User> userPtr = session.add(std::move(user));
}
Bash
1
g++ -std=c++14 dbo.cpp -o wt -I/home/user/boost_1_81_0/include -L/home/user/boost_1_81_0/lib -lwt -lwtdbo -lwtdbosqlite3
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
dbo.cpp: In function ‘void run()’:
dbo.cpp:35:46: error: ‘backend’ is not a member of ‘Wt::Dbo’
   35 |     auto sqlite3 = std::make_unique<Wt::Dbo::backend::Sqlite3>("blog.db");
      |                                              ^~~~~~~
dbo.cpp:35:46: error: ‘backend’ is not a member of ‘Wt::Dbo’
dbo.cpp:35:25: error: parse error in template argument list
   35 |     auto sqlite3 = std::make_unique<Wt::Dbo::backend::Sqlite3>("blog.db");
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dbo.cpp:35:63: error: no matching function for call to ‘make_unique<<expression error> >(const char [8])’
   35 |     auto sqlite3 = std::make_unique<Wt::Dbo::backend::Sqlite3>("blog.db");
      |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
In file included from /usr/include/c++/12/memory:75,
                 from /home/user/boost_1_81_0/include/Wt/Dbo/ptr.h:14,
                 from /home/user/boost_1_81_0/include/Wt/Dbo/Types.h:10,
                 from /home/user/boost_1_81_0/include/Wt/Dbo/Dbo.h:10,
                 from dbo.cpp:1:
/usr/include/c++/12/bits/unique_ptr.h:1064:5: note: candidate: ‘template<class _Tp, class ... _Args> std::__detail::__unique_ptr_t<_Tp> std::make_unique(_Args&& ...)’
 1064 |     make_unique(_Args&&... __args)
      |     ^~~~~~~~~~~
/usr/include/c++/12/bits/unique_ptr.h:1064:5: note:   template argument deduction/substitution failed:
dbo.cpp:35:63: error: template argument 1 is invalid
   35 |     auto sqlite3 = std::make_unique<Wt::Dbo::backend::Sqlite3>("blog.db");
      |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
/usr/include/c++/12/bits/unique_ptr.h:1079:5: note: candidate: ‘template<class _Tp> std::__detail::__unique_ptr_array_t<_Tp> std::make_unique(size_t)’
 1079 |     make_unique(size_t __num)
      |     ^~~~~~~~~~~
/usr/include/c++/12/bits/unique_ptr.h:1079:5: note:   template argument deduction/substitution failed:
dbo.cpp:35:63: error: template argument 1 is invalid
   35 |     auto sqlite3 = std::make_unique<Wt::Dbo::backend::Sqlite3>("blog.db");
      |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
/usr/include/c++/12/bits/unique_ptr.h:1089:5: note: candidate: ‘template<class _Tp, class ... _Args> std::__detail::__invalid_make_unique_t<_Tp> std::make_unique(_Args&& ...)(deleted)
 1089 |     make_unique(_Args&&...) = delete;
      |     ^~~~~~~~~~~
/usr/include/c++/12/bits/unique_ptr.h:1089:5: note:   template argument deduction/substitution failed:
dbo.cpp:35:63: error: template argument 1 is invalid
   35 |     auto sqlite3 = std::make_unique<Wt::Dbo::backend::Sqlite3>("blog.db");
      |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
Путь к Sqlite3 верный - /home/user/boost_1_81_0/include/Wt/Dbo/backend
Не пойму с чем это связано, может из-за названия ::backend:: с маленькой буквы
Название класса соответствует

/*! \class Sqlite3 Wt/Dbo/backend/Sqlite3.h Wt/Dbo/backend/Sqlite3.h
* \brief An SQLite3 connection
*
* This class provides the backend implementation for SQLite3 databases.
*
* \ingroup dbo
*/

Если компилировать как-нибудь так -I/home/user/boost_1_81_0/include/Wt

Bash
1
g++ -std=c++14 dbo.cpp -o wt -I/home/user/boost_1_81_0/include/Wt -L/home/user/boost_1_81_0/lib -lwt -lwtdbo -lwtdbosqlite3
то выдает вообще такую ошибку:

Bash
1
2
3
4
dbo.cpp:1:10: fatal error: Wt/Dbo/Dbo.h: No such file or directory
    1 | #include <Wt/Dbo/Dbo.h>
      |          ^~~~~~~~~~~~~~
compilation terminated.
Помогите плиз разобраться.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.07.2023, 19:28
Ответы с готовыми решениями:

Ошибка при компиляции (.is not a member of std)
При компиляции возникают следующие ошибки: wcerr/wostringstream is not a member of std В чем причина и как это исправить? Сбит с...

Image - при компиляции картинки не видно
загрузил картинку.jpg в компонент image при компиляции картинки не видно

Не видно определений функций при раздельной компиляции
Описал класс и его наследника в заголовочном файле; самые громоздкие определения функций вынес в отдельные файлы, однако при...

4
фрилансер
 Аватар для Алексей1153
6356 / 5505 / 1110
Регистрация: 11.10.2019
Сообщений: 14,627
28.07.2023, 20:33
догадки

тут Wt - лишнее в конце
Цитата Сообщение от Shooter85 Посмотреть сообщение
Если компилировать как-нибудь так -I/home/user/boost_1_81_0/include/Wt
а тут надо кавычки, а не треугольники
Цитата Сообщение от Shooter85 Посмотреть сообщение
#include <Wt/Dbo/Dbo.h>
0
19456 / 10069 / 2451
Регистрация: 30.01.2014
Сообщений: 17,749
28.07.2023, 21:08
Лучший ответ Сообщение было отмечено Shooter85 как решение

Решение

Цитата Сообщение от Shooter85 Посмотреть сообщение
Название класса соответствует
/*! \class Sqlite3 Wt/Dbo/backend/Sqlite3.h Wt/Dbo/backend/Sqlite3.h
Ну так сделайте:
C++
1
#include <Wt/Dbo/backend/Sqlite3.h>
Добавлено через 3 минуты
Цитата Сообщение от Shooter85 Посмотреть сообщение
/home/user/boost_1_81_0/include/Wt
К проблеме, думаю, не относится, но нафига вы Wt в include от буста запихали? Чтобы можно было вопрос в разделе boost опубликовать?
0
 Аватар для Shooter85
0 / 0 / 0
Регистрация: 18.07.2023
Сообщений: 27
28.07.2023, 22:45  [ТС]
Спасибо за советы.

Цитата Сообщение от Алексей1153 Посмотреть сообщение
а тут надо кавычки, а не треугольники
Я уже по всякому пробовал. По правилам, конечно, надо ковычки, но эта библиотека везде <> указывает в своих примерах и они работают. Проблема, к сожалению, не в этом.


Цитата Сообщение от DrOffset Посмотреть сообщение
Ну так сделайте:
C++
1
#include <Wt/Dbo/backend/Sqlite3.h>
К проблеме, думаю, не относится, но нафига вы Wt в include от буста запихали? Чтобы можно было вопрос в разделе boost опубликовать?
Вот так добавил и сработало.
#include "Wt/Dbo/Dbo.h"
#include "Wt/Dbo/backend/Sqlite3.h"
#include <string>
Хотя я ранее Wt/Dbo/backend/Sqlite3.h добавлял, но видимо вместо Dbo.h или как-то ещё криво сделал тогда...увы.

В основе Wt лежит Boost и его необходимо установить перед установкой Wt. У меня стоял Boost 1_81_0, но я решил поставить последнюю версию boost_1_82_0 для Wt. А boost_1_81_0, я тупо удалил. И по запаре установил Wt в старую папку от Boost
0
19456 / 10069 / 2451
Регистрация: 30.01.2014
Сообщений: 17,749
28.07.2023, 22:54
Цитата Сообщение от Shooter85 Посмотреть сообщение
В основе Wt лежит Boost и его необходимо установить перед установкой Wt.
Но это не значит, что его нужно ставить в тот же каталог.
Некоторый беспорядок так получается.
Хотя бы потому, что сложно будет отдельно буст обновить.
Кстати рекомендую ознакомиться с пакетными системами: vcpkg и NuGet для MSVC и MSYS2/pacman для MinGW, чтобы и буст и все остальное ставить в одну-две команды и сразу по правильным каталогам и совместимо с компилятором
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.07.2023, 22:54
Помогаю со студенческими работами здесь

Ошибка при компиляции: "Button2Click is not a member of TForm2"
Проблема с формой, не знаю как её устранить

Ошибка [Warning] non-static data member initializers only available with -std=c++11 or -std=gnu++11 при компиляции
Доброго времени суток. Компилятор выдает ошибку non-static data member initializers only available with -std=c++11 or -std=gnu++11 при...

Ошибка компиляции. error: request for member
Добрый вечер. Возникает ошибка: error: request for member 'read_from' in '*(((nation*)this)-&gt;nation::currency + ((sizetype)(((unsigned...

При установке Виндос 7 или ХР не видно диска,но их видно в Акронисе и Биосе
При установке Виндос 7 или ХР не видно диска,но их видно в Акронисе и Биосе,в Акронисе можна их делить и форматировать.Подскажите что можна...

Lightbox. При открытии увеличенной картинки, видно только заднюю область черную, а само изображение не видно
Здравствуйте! на сайте странно работает lightbox. При открытии увеличенной картинки, видно только заднюю область черную, а само изображение...


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

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

Новые блоги и статьи
CQRS (Command Query Responsibility Segregation) на Java
Javaican 12.05.2025
CQRS — Command Query Responsibility Segregation, или разделение ответственности команд и запросов. Суть этого архитектурного паттерна проста: операции чтения данных (запросы) отделяются от операций. . .
Шаблоны и приёмы реализации DDD на C#
stackOverflow 12.05.2025
Когда я впервые погрузился в мир Domain-Driven Design, мне показалось, что это очередная модная методология, которая скоро канет в лету. Однако годы практики убедили меня в обратном. DDD — не просто. . .
Исследование рантаймов контейнеров Docker, containerd и rkt
Mr. Docker 11.05.2025
Когда мы говорим о контейнерных рантаймах, мы обсуждаем программные компоненты, отвечающие за исполнение контейнеризованных приложений. Это тот слой, который берет образ контейнера и превращает его в. . .
Micronaut и GraalVM - будущее микросервисов на Java?
Javaican 11.05.2025
Облачные вычисления безжалостно обнажили ахиллесову пяту Java — прожорливость к ресурсам и медлительный старт приложений. Традиционные фреймворки, годами радовавшие корпоративных разработчиков своей. . .
Инфраструктура как код на C#
stackOverflow 11.05.2025
IaC — это управление и развертывание инфраструктуры через машиночитаемые файлы определений, а не через физическую настройку оборудования или интерактивные инструменты. Представьте: все ваши серверы,. . .
Инъекция зависимостей в ASP.NET Core - Практический подход
UnmanagedCoder 11.05.2025
Инъекция зависимостей (Dependency Injection, DI) — это техника программирования, которая кардинально меняет подход к управлению зависимостями в приложениях. Представьте модульный дом, где каждая. . .
Битва за скорость: может ли Java догнать Rust и C++?
Javaican 11.05.2025
Java, с её мантрой "напиши один раз, запускай где угодно", десятилетиями остаётся в тени своих "быстрых" собратьев, когда речь заходит о сырой вычислительной мощи. Rust и C++ традиционно занимают. . .
Упрощение разработки облачной инфраструктуры с Golang
golander 11.05.2025
Причины популярности Go в облачной инфраструктуре просты и одновременно глубоки. Прежде всего — поразительная конкурентность, реализованная через горутины, которые дешевле традиционных потоков в. . .
Создание конвейеров данных ETL с помощью Pandas
AI_Generated 10.05.2025
Помню свой первый опыт работы с большим датасетом — это была катастрофа из неотформатированных CSV-файлов, странных значений NULL и дубликатов, от которых ехала крыша. Тогда я потратил три дня на. . .
C++ и OpenCV - Гайд по продвинутому компьютерному зрению
bytestream 10.05.2025
Компьютерное зрение — одна из тех технологий, которые буквально меняют мир на наших глазах. Если оглянуться на несколько лет назад, то сложно представить, что алгоритмы смогут не просто распознавать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru