簡體   English   中英

編譯多個C ++,獲得未初始化的向量

[英]Compiling Multiple C++, getting uninitialized Vectors

而不是將我的所有代碼都存儲在一個巨型文件中,而是將其拆分為多個文件。 這個想法是在另一個文件(World.cpp)中有一個結構向量(Thing),並能夠從Main.cpp中訪問它們。 下面是相關代碼:

World.h:

#include <vector>
#include "Lab4.h"
using namespace std;

struct Thing {
   glm::vec3 pos;
};

void InitWorld();
void addThingToWorld(glm::vec3 Position);
Thing getThingAtIndex(int index);

World.cpp:

#include "World.h"

vector<Thing> world;

void InitWorld() {
    Thing t;
    t.pos = glm::vec3 (0.5, 0.0, 0.0);
    world.push_back(t);
}

void addThingToWorld(glm::vec3 Position) {
   Thing t;
   t.pos = Position;
   world.push_back(t);
}

Thing getThingAtIndex(int index) {
   world.at(index);
}

Main.cpp的:

#include "Lab4.h"

void main() {
    InitWorld();
    Thing t = getThingAtIndex(0);
    prinf("%f %f %f\n", t.pos.x, t.pos.y, t.pos.z);
}

問題是從main打印出來的值要么是垃圾,要么是全零。 如果我將其保存在一個文件中,則代碼可以正常工作。 我已經花了幾個小時,但我無法弄清楚。 我想解釋一下為什么“世界”矢量不能打印出“ 0.5 0.0 0.0”。

你什么都沒退

Thing getThingAtIndex(int index) {
   world.at(index);
}   // returns garbage !!

請更正:

Thing getThingAtIndex(int index) {
   return world.at(index);
}   // now returns something 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM