cuốn sách gpt4 ai đã làm

C++ tránh các chuỗi if & mã hóa cứng

In lại Tác giả: Walker 123 Thời gian cập nhật: 27-11-2023 23:51:24 28 4
mua khóa gpt4 Nike

Có cách nào để tránh sử dụng chuỗi if và mã hóa cứng trong chuyển hướng hàm không, ý tưởng là nhận chuỗi và gọi hàm thích hợp, có thể sử dụng mẫu/lập trình meta..

#include 
#include

tài khoản vô hiệu()
{
std::cout << "phương thức acout" << std::endl;
}

trạng thái trống()
{
std::cout << "phương thức trạng thái" << std::endl;
}

chuyển hướng void(std::string Method_to_call)
{
if(method_to_call == "tài khoản")
{
tài khoản();
}
khác nếu (phương thức_to_call == "trạng thái")
{
trạng thái();
}
khác
{
std::cout << "không tìm thấy phương thức!!" << std::endl;
}
}

int chính()
{
std::string Method_name;
std::cin >> Method_name;

chuyển hướng (tên phương thức);

trả về 0;
}

câu trả lời hay nhất

Bạn có thể sử dụng std::map và std::function để đạt được điều này, mặc dù nó vẫn yêu cầu chuỗi "mã hóa cứng" tại điểm chèn.

trạng thái trống() 
{
std::cout << "trạng thái" << std::endl;
}

tài khoản vô hiệu()
{
std::cout << "tài khoản" << std::endl;
}

int chính()
{
std::map< std::string, std::function > chức năng;

Hàm.emplace ("trạng thái", trạng thái);
Hàm.emplace ("tài khoản", tài khoản);

std::string Method_name;
std::cin >> Method_name;

auto iter(functions.find(method_name) );
if( iter !=functions.end() )
{
lặp-> giây();
}
khác
{
std::cout << "Phương thức " << tên phương thức << " không tìm thấy!!"
}
}

Nếu bạn sẵn sàng sử dụng macro thì bạn có thể tránh chuỗi bổ sung như thế này:

#define ADD_FUNCTION( map, func ) map.emplace( #func, func );

std::map< std::string, std::function< void() > > chức năng;
ADD_FUNCTION(chức năng, trạng thái);
ADD_FUNCTION(chức năng, tài khoản);

Về việc tránh các chuỗi if & được mã hóa cứng trong C++, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/46130117/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress