C ++, проблемы со структурами в классах - PullRequest
0 голосов
/ 27 мая 2020

всем, если кто может мне помочь буду очень признателен. Я пытался заполнить структуру m_Center функцией того же класса, я использую eclipse для работы, и он дал следующие сообщения об ошибках:

-'m_Center' was not declared in this scope
-Field 'radius' could not be resolved
-Symbol 'm_Center' could not be resolved

Мой заголовочный файл Obstacles.h:

#ifndef SRC_OBSTACLES_H_
#define SRC_OBSTACLES_H_

#include <eigen3/Eigen/Dense>
#include <iostream>
#include <random>
#include <list>
#include <stdlib.h>
#include <time.h>

class CObstacles
{
protected:
    struct Center
    {
        float m_vXdCenterX;
        float m_vXdCenterY;
        float m_vXdCenterZ;
        double distance;
        Eigen::VectorXf v_XfAxisCyl;
        Eigen::VectorXf vXfP1;
        double radius;
    };
    Center m_Center;

public:
    CObstacles(double dradius, Eigen::VectorXf &m_vXdMaxBound, Eigen::VectorXf &m_vXdMinBound, int num_obstacles);
    ~CObstacles();

    void generate_obstacles(double dradius, Eigen::VectorXf &m_vXdMaxBound, Eigen::VectorXf &m_vXdMinBound, int num_obstacles);
};


#endif

, а Obstacles.cpp это:

#include "Obstacles.h"

CObstacles::CObstacles(double dradius, Eigen::VectorXf &m_vXdMaxBound, Eigen::VectorXf &m_vXdMinBound, int num_obstacles)
{
    double m_dradius = dradius;
    Eigen::VectorXf m_dvXdMaxBound = m_vXdMaxBound;
    Eigen::VectorXf m_dvXdMinBound = m_vXdMinBound;
    int dnum_obstacles = num_obstacles;
}

CObstacles::~CObstacles()
{
}

void generate_obstacles(double dradius, Eigen::VectorXf &m_vXdMaxBound, Eigen::VectorXf &m_vXdMinBound, int num_obstacles)
{
    srand(time(NULL));
    float aux_centerx, aux_centery;
    Eigen::Vector3f vXfP1;
    Eigen::Vector3f vXfP2;
    Eigen::Vector3f distance;
    for(int num_obs = 0; num_obs < num_obstacles; num_obs++)
    {
        aux_centerx = rand() % 20 + 1;
        aux_centery = rand() % 20 + 1;
        vXfP2 << aux_centerx, aux_centery, 0;
        vXfP1 << aux_centerx, aux_centery, 0;
        distance = vXfP2 - vXfP1;
        m_Center[num_obs].radius = dradius;
    }
}

1 Ответ

0 голосов
/ 27 мая 2020

Добавьте имя класса перед методом generate_obstacles.

void CObstacles::generate_obstacles(double dradius, Eigen::VectorXf &m_vXdMaxBound, Eigen::VectorXf &m_vXdMinBound, int num_obstacles)
{
...
}
...