Использовать структуру как глобальную для библиотек - PullRequest
0 голосов
/ 06 ноября 2018

Я делаю свою собственную библиотеку, и у меня есть проблема. Когда я предварительно объявляю функцию в файле .h, она не распознается, так как это логично. И я не знаю, как это сделать.

В Vector2Lib.cpp у меня есть структура:

struct Vector2{
   float x; 
   float y; 
};

И функция, она равна вектору:

    Vector2 sumaVector(Vector2 x, Vector2 y) {
       Vector2 vectorSumado; 

       vectorSumado.x = x.x + y.x;
       vectorSumado.y = x.y + y.y;

       return vectorSumado;
    }

Когда я провожу предварительную декларацию в файле .h:

Vector2 sumaVector(Vector2 x, Vector2 y);

Он не распознает структуру Vector2. Как я могу это сделать?

Извините за мой плохой английский, заранее извиняюсь. Спасибо.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Вы можете решить свою проблему двумя способами, либо написать

typedef struct {
                float x; 
                float y; }Vector2;

int main(){

    Vector2 tmpVec;
    tmpVec.x=10.0;
    tmpVec.y=30.0;
    //// 
 }

или вы можете написать пример кода, подобный этому

struct Vector2{
     float x;     
     float x;   
};
int main(){

    stuct Vector2 tmpVec;
    tmpVec.x=10.0;
    tmpVec.y=30.0;
    //// 
 }
0 голосов
/ 06 ноября 2018

Поместите определение struct также в файл .h.

Файл .h должен выглядеть следующим образом:

#pragma once

// Define the struct.
struct Vector2{
   float x; 
   float y; 
};

// Declare the function.
Vector2 sumaVector(Vector2 x, Vector2 y);
...