将struct用作库的全局变量

时间:2018-11-06 19:09:45

标签: c++ struct libraries

我正在制作自己的图书馆,但遇到了问题。当我在.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 :(得分:1)

还将struct的定义也放在.h文件中。

.h文件应如下所示:

#pragma once

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

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

答案 1 :(得分:1)

您可以通过两种方式解决问题

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;
    //// 
 }