- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在用这段代码测试 C++11 线程,但是在创建线程时,我遇到了错误没有匹配函数调用 'std::thread::thread()' .
这就像我给 std::thread ctr 的函数有什么问题,但我不明白它是怎么错的。它未完成,但在我看来是正确的:
标题:
#ifndef CONNECTION_H
#define CONNECTION_H
#include
#include
class Connection
{
công cộng:
Connection(std::string mysqlUser, std::string mysqlPassword);
~Connection();
riêng tư:
std::string mysqlUser;
std::string mysqlPassword;
std::string mysqlIP;
int mysqlPort;
mysqlpp::Connection mysqlConnection;
std::thread connectionThread;
void threadLoop();
};
#endif // CONNECTION_H
nguồn:
#include "connection.h"
Connection::Connection(std::string mysqlUser, std::string mysqlPassword)
{
this->mysqlUser = mysqlUser;
this->mysqlPassword = mysqlPassword;
this->mysqlIP = "localhost"; //default
this->mysqlPort = 3306; //default
//Launch thread
std::thread connectionThread(threadLoop);
}
Connection::~Connection(){
mysqlConnection.disconnect();
}
void Connection::threadLoop(){
//Connect to mySQL database
mysqlConnection = new mysqlpp::Connection(false);
if(mysqlConnection.connect(NULL, mysqlIP.c_str(), mysqlUser.c_str(), mysqlPassword.c_str(), mysqlPort)){
std::string consulta = "SELECT * FROM 'Coordinates'";
mysqlpp::Query query = mysqlConnection.query(consulta);
mysqlpp::StoreQueryResult res = query.store();
query.reset();
}
while(true){
// Stuff
}
}
1 Câu trả lời
问题是threadLoop
是一个成员函数,但是没有对象可以应用。只是猜测:
std::thread connectionThread(&Connection::threadLoop, this);
但这只是句法问题;还有一个逻辑问题:该行创建了一个 std::thread
类型的本地对象,该对象在函数返回时消失。它的析构函数将调用 std::terminate()
因为线程还没有加入。最有可能的是,这应该将线程附加到 connectionThread
成员。为此:
std::thread thr(threadLoop, this);
std::swap(thr, connectionThread);
关于C++11 std::thread 给出错误:没有匹配的函数来调用 std::thread::thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12624271/
Tôi đang phát triển một thư viện nhỏ và một trong những điều tôi cần làm là có một người truy cập vào một số dữ liệu và trả về kết quả. Trong một số mã C++ cũ hơn, khách truy cập cần khai báo một typedef return_type. Ví dụ, boost::stati
Tôi đang cố gắng tạo std::any với các khóa và giá trị thuộc kiểu std:map Visual Studio 2017 std::map m("lastname", "Ivanov"); std::cout (m["lastname", "Ivanov");
Tôi đã khai báo một bộ sưu tập trong C++ là std::map>. Làm thế nào tôi có thể lặp lại hoặc in các giá trị tập hợp? Câu trả lời hay nhất Nếu bạn biết cách lặp lại từng std::map hoặc std::set riêng lẻ, bạn sẽ có thể kết hợp các lần lặp mà không gặp vấn đề gì.
Làm thế nào để lặp lại? Tôi đã thử cách này: //----- code std::vector
Tôi có hai trường hợp sử dụng. A. Tôi muốn đồng bộ hóa quyền truy cập vào hàng đợi từ hai luồng. B. Tôi muốn đồng bộ hóa quyền truy cập của hai luồng vào hàng đợi và sử dụng biến điều kiện vì một trong các luồng sẽ đợi luồng kia lưu trữ thứ gì đó vào hàng đợi. Đối với trường hợp sử dụng A, tôi thấy sử dụng std::lock_
Tôi đã xem tài liệu về cả hai loại đặc điểm nhưng không chắc chắn sự khác biệt là gì. Tôi không phải là luật sư ngôn ngữ, nhưng theo tôi hiểu thì tất cả chúng đều áp dụng cho các kiểu "memcpy-able". Chúng có thể sử dụng thay thế cho nhau được không? Câu trả lời hay nhất Không, các thuật ngữ này không thể sử dụng thay thế cho nhau. Cả hai thuật ngữ đều có nghĩa là
Tôi có mã kiểm tra sau, trong đó có tham số fS là một container ofstream: #include #include #include #include int
Đây là phần tiếp theo của câu hỏi này hàm c++ ptr trong unorderer_map, lỗi thời gian biên dịch Tôi đang cố gắng sử dụng std::function thay vì con trỏ hàm và nó chỉ hoạt động khi hàm là
std::unordered_map str_bool_map = { {"a", true}, {"b", false}, {"c", true} }; Chúng ta có thể sử dụng
Tôi có đối tượng sau std::vector> vectorList; Sau đó tôi thêm vào đây bằng cách sử dụng std::vector vec_tmp; vec_tmp.push_back(strDRG); vec_tmp.p
Tại sao std::initializer_list không hỗ trợ std::get<> , std::tuple_size và std::tuple_element ? Có nhiều biểu thức hiện tại được sử dụng trong constexpr.
Tôi có một biến được định nghĩa như thế này auto drum = std::make_tuple ( std::make_tuple ( 0.3f , Ex
Giả sử tôi có một std::map riêng tư trong lớp của mình. Làm thế nào tôi có thể chuyển đổi nó thành std::map để trả về cho người dùng? Tôi muốn nguyên mẫu sau const std
Giả sử tôi có một std::map riêng tư trong lớp của mình. Làm thế nào tôi có thể chuyển đổi nó thành std::map để trả về cho người dùng? Tôi muốn nguyên mẫu sau const std
Vấn đề Tôi đang cố gắng truyền một lệnh đóng lambda cho std::thread để gọi một hàm bao quanh tùy ý với các đối số bao quanh tùy ý. mẫu std::thread timed_thread(Hàm&& f
Tôi muốn tạo một lớp mẫu có thể chứa bất kỳ sự kết hợp nào giữa các vùng chứa và vùng chứa con. Ví dụ như std::vector hoặc std::map. Tôi đã thử nhiều cách kết hợp nhưng phải thừa nhận là tôi bị choáng ngợp bởi sự phức tạp của các mẫu. Phần đóng mà tôi biên dịch giống như thế này: templ
Tôi có một std::vector
Đôi khi, chúng ta có một nhà máy tạo ra một vectơ std::unique_ptr
Câu hỏi này đã có câu trả lời tại đây: Sắp xếp một vectơ các đối tượng tùy chỉnh (14 câu trả lời) Đã đóng 6 năm trước. Tôi đã tạo ra một vector vector và tôi muốn
Tôi có ba thành viên lớp: public: std::vector
Tôi là một lập trình viên xuất sắc, rất giỏi!