Немного длинного названия, так что мне жаль.Но сейчас у меня есть небольшая проблема с моим кодом.Он должен быть довольно общим, и в коде происходит немало вещей, поэтому я не буду публиковать все это, но у меня есть одна проблема.Вот оно:
Sentence newSentence(currentSentence, this, sentenceCount);
this->sentencesNonP.push_back(newSentence);
Теперь newSentence
имеет атрибут с именем words
типа std::vector<Word *>
, Word
также является другим классом в проекте.
Когда я отлаживаю и проверяю атрибуты newSentence
, это показывает, что words
заполняется с длиной 4, однако, когда я проверяю sentencesNonP
, который является std::vector<Sentence>
, длина вектора words
равна 0
.Я проверяю первую точку на sentencesNonP
, потому что это первое значение, которое вводится первым, поэтому не то, чтобы я смотрел в неправильном месте вектора sentencesNonP
.
Любая причина, почему мойданные теряются в процессе преобразования?
РЕДАКТИРОВАТЬ: я реализовал как перегрузку оператора =
и оператор копирования.Тем не менее, words
все еще пуст в sentencesNonP
.
EDIT2: Sentence.h (исключая include's)
class Word;
class Document;
class Sentence {
public:
//Take out Document * document
Sentence();
Sentence(std::string value, Document * document = NULL, int senNum = 0);
Sentence(const Sentence& newSent);
//Sentence(std::string value);
~Sentence(void);
Sentence & operator=(const Sentence newSent);
Document * getDocument(void);
void setDocument(Document * document);
//__declspec(property(get = getDocument, put = setDocument)) Document * document;
std::string getSentence(void);
void setSentence(std::string word);
//__declspec(property(get = getSentence, put = setSentence)) std::string str;
void setSentenceNumber(unsigned int i);
Word * operator[] (unsigned int i);
unsigned int wordCount(void);
unsigned int charCount(void);
unsigned int sentenceNumber(void);
std::vector<Word *> getWordsVector(void);
private:
std::string sentence;
std::vector<Word *> words;
std::vector<Word> wordNonP;
Document * myd;
unsigned int senNum;
};
Игнорировать закомментированный declspec
EDIT3: вот мой конструктор копирования:
Sentence::Sentence(const Sentence& newSent) {
this->sentence = newSent.sentence;
this->myd = newSent.myd;
this->senNum = newSent.senNum;
for (int i = 0; i < newSent.wordNonP.size(); i++) {
this->wordNonP.push_back(newSent.wordNonP[i]);
this->words.push_back(newSent.words[i]);
}
}