Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 1
Регистрация: 14.11.2017
Сообщений: 10
1

Non-standard syntax use & to create a pointer. cURL

14.05.2019, 17:42. Показов 608. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте возникла ошибка в 83 строке, не могу передать функцию в качестве параметра для другой функции вот 2 исходных файла, помогите решить проблему. Спасибо!

Заголовочный файл

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
#ifndef MAIL_H_
#define MAIL_H_
 
#include <fstream>
#include <iostream>
#include <string>
 
struct SMTP
{
    std::string fin;
    std::string to;
    std::string from;
    std::string password;
    std::string inbox;
    std::string hostname;
    int timer = 0;
};
 
class Mail
{
private:
    struct upload_status{ int lines_read; };
    struct SMTP data;
    char payload_text[5][10000] =
    {
      "To: ",
      "From: ",
      "Subject: SMTP TLS example message\r\n",
      NULL
    };
    SMTP operator = (const SMTP conf);
    size_t payload_source(void* ptr, size_t size, size_t nmemb, void* userp);
    void send();
public:
    Mail(SMTP config);
    ~Mail();
    int loop();
};
 
#endif
И вот файл где произошла ошибка на 83 строке

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include "Mail.h"
 
#define CURL_STATICLIB
#include "curl/curl.h"
 
#pragma comment (lib, "curl/libcurl_a_debug.lib")
#pragma comment (lib, "ws2_32.lib")
#pragma comment (lib, "Crypt32.lib")
#pragma comment (lib, "advapi32.lib")
#pragma comment (lib, "Normaliz.lib")
#pragma comment (lib, "Wldap32.lib")
 
SMTP Mail::operator=(const SMTP config)
{
    SMTP out;
 
    out.fin = config.fin;
    out.from = config.from;
    out.hostname = config.hostname;
    out.inbox = config.inbox;
    out.password = config.password;
    out.timer = config.timer;
    out.to = config.to;
 
    return out;
}
Mail::Mail(SMTP config)
{   
    Mail::data = config;
    
    Mail::loop();
}
 
Mail::~Mail()
{
}
 
int Mail::loop()
{
    while(1)
    {
        Sleep(Mail::data.timer);
 
        Mail::send();
    }
}
 
void Mail::send()
{
    std::ifstream fin(Mail::data.fin);
    std::string text;
    text.assign((std::istreambuf_iterator<char>(fin)), std::istreambuf_iterator<char>());
    fin.close();
 
    strcat(Mail::payload_text[0], Mail::data.from.c_str());
    strcat(Mail::payload_text[0], "\r\n");
    strcat(Mail::payload_text[1], Mail::data.to.c_str());
    strcat(Mail::payload_text[1], "\r\n");
    memset(Mail::payload_text[3], 0, sizeof(Mail::payload_text[3]));
    strcpy(Mail::payload_text[3], text.c_str());
 
    CURL* curl;
    CURLcode res = CURLE_OK;
    struct curl_slist* recipients = NULL;
    struct upload_status upload_ctx;
 
    upload_ctx.lines_read = 0;
 
    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_USERNAME, Mail::data.inbox);
        curl_easy_setopt(curl, CURLOPT_PASSWORD, Mail::data.password);
 
        curl_easy_setopt(curl, CURLOPT_URL, Mail::data.hostname);
 
        curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL);
 
        curl_easy_setopt(curl, CURLOPT_MAIL_FROM, Mail::data.from);
 
        recipients = curl_slist_append(recipients, Mail::data.to.c_str());
        curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
 
        curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source); // <--- Ошибка тут
        curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
        curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
 
        curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
 
        res = curl_easy_perform(curl);
 
        if (res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                curl_easy_strerror(res));
 
        curl_slist_free_all(recipients);
 
        curl_easy_cleanup(curl);
    }
}
 
size_t Mail::payload_source(void* ptr, size_t size, size_t nmemb, void* userp)
{
    struct upload_status* upload_ctx = (struct upload_status*)userp;
    const char* data;
 
    if ((size == 0) || (nmemb == 0) || ((size * nmemb) < 1)) {
        return 0;
    }
 
    data = Mail::payload_text[upload_ctx->lines_read];
 
    if (data) {
        size_t len = strlen(data);
        memcpy(ptr, data, len);
        upload_ctx->lines_read++;
 
        return len;
    }
}
Добавлено через 29 минут
Всё вопрос решён помощь не требуется. Всем кто искал решение, писал в это время. Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2019, 17:42
Ответы с готовыми решениями:

Non-standard syntax; use '&' to create a pointer to member
for (size_t i = 1; i &lt;= 32; i *= 2) { char* dimensional = to_string(MATRIX * i).c_str; ...

Множественное наследование (non-standard syntax use & to create a pointer to member)
Делал все как сказано в методичке,но почему-то показывает ошибку non-standard syntax use &amp; to...

Исправить ошибку "non-standard syntax; use '&' to create a pointer to member"
Доброго времени суток,такая проблема,код вроде написан нормально,но выдает ошибку : &quot;non-standard...

How to create simple editor for syntax highlithing in VC++?
Hi, everybody How to create simple editor for syntax highlithing in VC++? Thanks in advance Sylva

0
14.05.2019, 17:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2019, 17:42
Помогаю со студенческими работами здесь

Curl & cookies & https
Добрый день! Такая проблемка с куками и курлом. Есть некий сайт(site) для получения полного...

Error C3867 to create a pointer to member в программе "Блокнот"
пытаюсь написать блокнот, вылетает одна ошибка, и предупреждение.... Сам исправить не в состоянии....

query='SELECT * FROM resume WHERE ' & ''' & RecSet('place')& ''' & '=' & '''& s_loc &''' & - что не так?
упростил для краткости запрос. в чем ошибка? RecSet - это коннекшн. query='SELECT * FROM resume...

error '80020009' &Icirc;&oslash;&egrave;&aacute;&ecirc;&agrave;. /lalala/profile.asp, line 28
При простейшем и сто раз работавшем скрипте, вылетает ошибка! след. содержания error...


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

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