У меня есть абстрактный класс с N защищенных членов:C++ Наследование абстрактных эталонных элементов для полиморфизма
class Something {
protected:
UINT someVal;
std::vector<SomeType> g_MyVec;
// some virtual abstract methods ...
public:
UINT getSomeVal() { return someVal; }
std::vector<SomeType> GetVec() { return g_MyVec; }
}
class SubClass : public Something {
public:
SubClass() { // no members in this class, all inherited from super
someVal = 5; // this sticks
g_myVec = { .. correct initialization }; // this doesn't stick
}
}
Клиент этого кода делает:
Something* s = &SubClass();
s->getSomeVal(); // OK, has 5 in it.
s->GetVec(); // Nada, it returns 0 size, nothing at all... WHY?!
Просвещение высоко ценится.
Вы принимаете адрес временного ??? Его UB и неправильный код. «Подкласс» уничтожается вместе с вектором после ';' – Arunmu
. Каков тип 'UINT'? Это 'unsigned int'? uint32_t? uint16_t? uint8_t? Вы должны просмотреть типы в 'stdint.h'. –
@ThomasMatthews Похож на [тип данных API Windows] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751 (v = vs.85) .aspx) (но только предположение) и ваш комментарий определенно имеет значение. –