Определение функции не распознается телом функции

Я создал класс под названием Payloadи есть std::vector<Payload> в классе под названием LineShape, Я также создал функцию внутри LineShape чтобы получить Payload от std::vector по данному индексу. Это Payload:

payload.h

class Payload {
public:

Payload (payload_type pType) {
type = pType;
}

payload_type getPayloadType() {
return type;
}

private:
payload_type type;
};

и функция, которая вызывает проблемы:

LineShape.h

    Payload getPayloadAt(int index) {
return transfer.at(index);
}

Visual Studio возвращает следующую ошибку:

C2334    unexpected token(s) preceding '{'; skipping apparent function body

По-видимому, это означает, что он не распознает тело функции как функцию из-за определения функции, но, похоже, все в порядке?

РЕДАКТИРОВАТЬ:
Вот остальные LineShape учебный класс:

class LineShape {
public:
sf::LineShape(sf::Vector2f i_point1, sf::Vector2f i_point2, float i_thickness = 5) {
point1 = i_point1;
point2 = i_point2;
thickness = i_thickness;

vertArr.setPrimitiveType(sf::LinesStrip);
vertArr.resize(2);

vertArr[0].position = point1;
vertArr[1].position = point2;

updateShape();
}

void updateShape() {
float sX = point1.x - point2.x;
float sY = point1.y - point2.y;

float sX2 = pow(sX, 2);
float sY2 = pow(sY, 2);

float sD = abs(sqrt(sX2 + sY2));
float shapeAngle_rad = std::atan2(sY, sX);
float shapeAngle = shapeAngle_rad * 180 / PI;

float shapeLength = sf::length(sf::Vector2f(point2 - point1));

arrShape.setSize(sf::Vector2f(shapeLength, thickness));
arrShape.setPosition(point2);
arrShape.setRotation(shapeAngle);
}

sf::Vector2f getPointPosition(sf::pointNum targetPoint) {
switch (targetPoint) {
case sf::pointNum::point1: {
return point1;
}
case sf::pointNum::point2: {
return point2;
}
};
}

void setPointPosition(sf::pointNum targetPoint, sf::Vector2f position) {
switch (targetPoint) {
case sf::pointNum::point1: {
point1 = position;
}
case sf::pointNum::point2: {
point2 = position;
}
};
updateShape();
}

void setColor(sf::Color color) {
arrShape.setFillColor(color);
}

void setOutlineColor(sf::Color color) {
arrShape.setOutlineColor(color);
}

void setOutlineWidth(float width) {
arrShape.setOutlineThickness(width);
}

void draw(sf::RenderWindow &window) {
window.draw(arrShape);
}

// PAYLOADS

void addPayload(Payload payload, bool through_filter = true) {
if (through_filter) {
if (payload.getPayloadType() == transferFilter) {
transfer.push_back(payload);
}
else {
G_LOG::INCORRECT_ITEM_PASSED_TO_FILTER();
};
}
else {
transfer.push_back(payload);
};
}

Payload getPayloadAt(int index) {
return transfer.at(index);
}

std::vector<Payload> getTransfer() {
return transfer;
}

void setPayloadFilter(payload_type filter) {
transferFilter = filter;
}

private:
sf::VertexArray vertArr;

sf::RectangleShape arrShape;

std::vector<Payload> transfer;
payload_type transferFilter;

sf::Vector2f point1;
sf::Vector2f point2;
float thickness;
};`

-1

Решение

Кажется, что в конце вашего Lineshape Class есть точка с запятой после точки с запятой, но, возможно, это просто плохая копия.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]