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

Lỗi chuyển đổi C++

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 11:40:08 28 4
mua khóa gpt4 Nike

Tôi đang cố gắng triển khai các con trỏ sau cho một mảng hàm thành viên:

IOperand* OpCreate::createOperand(loại eOperandType,
const std::string&val)
{
size_t nó = 0;
Tab OpPtrTab[] =
{
{Int8, &OpCreate::createInt8},
{Int16, &OpCreate::createInt16},
{Int32, &OpCreate::createInt32},
{Float, &OpCreate::createFloat},
{Double, &OpCreate::createDouble},
{Không xác định, NULL}
};

while ((tab[it]).type != Không xác định)
{
if ((tab[it]).type == loại)
return ((tab[it]).*((tab[it]).funcPtr))(val);
nó++;
}
trả về NULL;
}

Từ các lớp sau:

lớp OpTạo
{
công cộng:

cấu trúc OpPtrTab
{
const loại eOperandType;
IOperand* (OpCreate::*funcPtr)(const std::string&);
};

IOperand* createOperand(eOperandType, const std::string&);

ChọnTạo();
~OpCreate();

riêng tư :

IOperand* createInt8(const std::string&);
IOperand* createInt16(const std::string&);
IOperand* createInt32(const std::string&);
IOperand* createFloat(const std::string&);
IOperand* createDouble(const std::string&);
};

Tôi không thể thấy mình đang làm gì sai, nhưng đây là lỗi trình biên dịch:

OpCreate.cpp: Trong hàm thành viên 'IOperand* OpCreate::createOperand(eOperandType, const string&)':
OpCreate.cpp:66:39: error: con trỏ tới loại thành viên 'IOperand* (OpCreate::)(const string&) {aka IOperand* (OpCreate::)(const std::basic_string&)}' không tương thích với loại đối tượng 'OpCreate::OpPtrTab'

Có vẻ như lệnh gọi hoặc quá trình khởi tạo của tôi không khớp với nguyên mẫu nhưng tôi không hiểu tại sao.

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

Bạn truyền con trỏ hàm thành viên tab[it].funcPtr áp dụng cho tab[nó] đối tượng, nhưng nó không trỏ đến Tab chức năng thành viên[it] sự vật.

Tôi nghĩ bạn muốn áp dụng nó vàocái này:

(this->*(tab[it].funcPtr))(val);

Về lỗi chuyển đổi 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/21699235/

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