您正在使用不正確的方法聲明數組。您創建一個包含三個對象的數組。您需要使用默認構造函數初始化每個對象。這是一種方法。 如果你以前沒見過結構,別擔心。所有你需要知道的,它就像一個小班。
#include <iostream>
#include <string>
using namespace std;
struct Object
{
string name;
Object(string _name)
{
name = _name;
}
};
int main()
{
Object obs[3] = {"one", "two", "three"};
cout<<obs[0].name<<obs[1].name<<obs[2].name<<endl;
system("pause");
return 0;
}
編輯;如果您的容量很大,請說1000.我會建議添加一個單獨的功能。你不在默認構造函數中進行初始化,但實際上會創建一個Initialize函數。你以後打電話。舉個例子;
Obstacle obstacles[CAP];
for(int i=0; i<CAP; i++)
{
obstacles[i].Initialize("img/playerSheet.png");
}
評論:「好吧,我只是編輯的構造上面,我錯了之前寫的...所以你的意思是for循環和我如何調用構造函數,像obstaclei;?:O」的
我可能在這裏錯了。但我認爲,以調用實際的構造,唯一的辦法就是做這樣的:
變化:
Obstacle obstacles[CAP] =("img/obstacle.png");
喜歡的東西;
const int CAP = 5;
Object** obstacles = new Object*[CAP];
for(int i = 0; i<CAP; i++)
{
obstacles[i] = new Object(filename);
}
//Do other stuff. And when done, release memory.
for(int i=0; i<CAP; i++)
{
delete obstacles[i];
}
delete []obstacles;
這是相當複雜的解決方案,如果你不習慣使用指針。
用大括號替換這些圓括號:'{}'。請注意,這將調用默認構造函數的每個其他對象的參數沒有給出,所以確保你有一個。 – 0x499602D2 2014-12-19 01:10:49