ошибка массива c ++ C3646: 'jarArray': неизвестный спецификатор переопределения - PullRequest
0 голосов
/ 03 декабря 2011

Еще один легкий .....

У меня есть массив объекта (jar), который я объявил в заголовке (поле).

#include "Jar.h"

using namespace std;



class box
{
public:
box();
void searchForPart(string part);


 private:


int numberOfJars;
Jar jarArray[50];
int count;
};

В фактическом конструкторе box @ box.cpp я заполняю массив jar:

#include "Jar.h"
#include "Box.h"


.....

jarArray[] = {Jar("bolts"), Jar("Nuts"), Jar("screws"), Jar("drywallnails"), Jar("nails")};

Я думаю, что что-то упустил в декларации. ошибка C3646: 'jarArray': неизвестный спецификатор переопределения. Любое предложение сейчас, что я пропускаю ???

Ответы [ 2 ]

1 голос
/ 03 декабря 2011

Если бы вы работали с C ++ 11, я думаю, вы могли бы сделать это:

Bar::Bar()
: jarArray({Jar("bolts"), Jar("Nuts"), Jar("screws"), Jar("drywallnails"), Jar("nails")})
{
    //...
}

Однако, с нашим любимым C ++ 03, все сводится к

Bar::Bar()
{
    jarArray[0] = Jar("bolts");
    jarArray[1] = Jar("nuts");
    jarArray[2] = Jar("screws");
    jarArray[3] = Jar("drywallnails");
    jarArray[4] = Jar("nails");
    //...
}
0 голосов
/ 03 декабря 2011

Если вы находитесь под C ++ 11:

Bar::Bar() : jarArray{Jar("bolts"), ... , Jar("screws")}{}

Если не использовать цикл for или его эквивалент.

Но ваша проблема, вероятно, в том, что Jar не виден в Box.cpp.

jarArray является участником Box. Так что вы можете просто инициализировать его из коробки верно? :)

...