Tôi đang làm bài tập về nhà cho lớp học C++ của mình và đã gặp phải vấn đề mà tôi không thể hiểu được mình đang làm gì sai.Chỉ có thể sử dụng con trỏ đến hàm bị ràng buộc để gọi hàm
Chỉ cần lưu ý, việc tách các tệp là cần thiết và tôi nhận ra điều này sẽ dễ dàng hơn nhiều nếu tôi chỉ tạo cấu trúc AttackStyles
bên trong main
và bỏ toàn bộ tệp lớp bổ sung.
Cơ sở của vấn đề của tôi là tôi dường như không thể lặp qua một mảng các lớp và rút ra dữ liệu cơ bản. Đây là mã:
// AttackStyles.h
#ifndef ATTACKSTYLES_H
#define ATTACKSTYLES_H
#include <iostream>
#include <string>
using namespace std;
class AttackStyles
{
private:
int styleId;
string styleName;
public:
// Constructors
AttackStyles(); // default
AttackStyles(int, string);
// Destructor
~AttackStyles();
// Mutators
void setStyleId(int);
void setStyleName(string);
// Accessors
int getStyleId();
string getStyleName();
// Functions
};
#endif
/////////////////////////////////////////////////////////
// AttackStyles.cpp
#include <iostream>
#include <string>
#include "AttackStyles.h"
using namespace std;
// Default Constructor
AttackStyles::AttackStyles()
{}
// Overloaded Constructor
AttackStyles::AttackStyles(int i, string n)
{
setStyleId(i);
setStyleName(n);
}
// Destructor
AttackStyles::~AttackStyles()
{}
// Mutator
void AttackStyles::setStyleId(int i)
{
styleId = i;
}
void AttackStyles::setStyleName(string n)
{
styleName = n;
}
// Accessors
int AttackStyles::getStyleId()
{
return styleId;
}
string AttackStyles::getStyleName()
{
return styleName;
}
//////////////////////////////////////////////
// main.cpp
#include <cstdlib>
#include <iostream>
#include <string>
#include "attackStyles.h"
using namespace std;
int main()
{
const int STYLE_COUNT = 3;
AttackStyles asa[STYLE_COUNT] = {AttackStyles(1, "First"),
AttackStyles(2, "Second"),
AttackStyles(3, "Third")};
// Pointer for the array
AttackStyles *ptrAsa = asa;
for (int i = 0; i <= 2; i++)
{
cout << "Style Id:\t" << ptrAsa->getStyleId << endl;
cout << "Style Name:\t" << ptrAsa->getStyleName << endl;
ptrAsa++;
}
system("PAUSE");
return EXIT_SUCCESS;
}
Câu hỏi của tôi là tại sao tôi nhận được lỗi:
"a pointer to a bound function may only be used to call the function"
trên cả ptrAsa->getStyleId
và ptrAsa->getStyleName
?
Tôi không thể tìm ra điều gì sai với điều này!
omg! Bây giờ tôi cảm thấy thực sự câm. Cảm ơn các bạn! – Kardsen