我有以下代碼片段,意圖是獲得某些項目列表和打印。它正在編譯,但在運行時,輸出不如預期。我在意料之外添加了評論。請讓我知道我在這裏做錯了什麼。無法檢索靜態字符*數組
#include <iostream>
using namespace std;
class cSample
{
private:
static const char *list1[];
static const char *list2[];
public:
cSample();
const char **GetList(int);
};
cSample::cSample()
{
}
const char *cSample::list1[] = {"Item1" , "Item2" , "Item3"};
const char *cSample::list2[] = {"Item4" ,"Item5" ,"Item6"};
const char **cSample::GetList(int i)
{
switch(i)
{
case 1:
return cSample::list1;
break;
case 2:
return cSample::list2;
break;
default:
break;
}
}
int main(int argc , const char *argv[])
{
cSample *oSample = new cSample();
const char**list1Item = oSample->GetList(1);//Here getlist returns list1+list2 item which is wrong , I am not sure why...
cout << "Items from List1 " << endl;
while(*list1Item != NULL)
{
cout << *list1Item << endl;
list1Item++;
}
const char **list2Item = oSample->GetList(2);//whereas list2 items are returned correctly using same method any idea why?
cout << "Items from list2" << endl;
while(*list2Item != NULL)
{
cout << *list2Item << endl;
list2Item++;
}
return 0;
}
應該還添加了'NULL'到'list2 []'或者它是UB。 – Abhineet 2014-10-10 06:52:19
你可能更喜歡'nullptr'自C++ 11以來。 – Jarod42 2014-10-10 07:32:11