我想知道是否有無論如何,我的超類可以調用子類的函數initValues()而不必重寫構造函數?從超類訪問子類?
下面的代碼:
#ifndef VECTOR_MATH_H
#define VECTOR_MATH_H
#include "GL\glew.h"
#include <iostream>
namespace Math3d
{
class Vector
{
public:
Vector(int length=2) : v(new float[length]) { initValues(); }
~Vector() { delete[] v; }
protected:
virtual void initValues()
{
std::cout << "Vector" << std::endl;
}
float* v;
};
class Vector3 : public Vector
{
public:
protected:
void initValues()
{
std::cout << "Vector3" << std::endl;
}
};
}
#endif
然後我創建這樣一個變量: 的Vector3 VEC;
然後我想要調用子類Vector3的initValues() 方法 。
這可能嗎?
似乎是重複的:http:// stackoverflow。com/questions/7644154/calling-base-class-virtual-method-by-derived-class-virtual-method –
@StevenBehnke看起來像OP的另一種要求。 –
它可能是,但反過來對我沒有任何意義。 Vector如何知道派生類? –