我什至不确定这是否可能,所以我想澄清一下。我有一个带有 const 字符串数组的父类,我希望它由它的子类初始化,例如:
class CParent{
CParent();
const char** strings;
};
和孩子班
class CChild:CParent{
CChild();
};
CChild::CChild()
: CParent::strings{
"First",
"Second"
}
{
CParent();
// some code
}
我需要这个,因为我将调用 CParent 的构造函数,并且我需要使用字符串。可以通过参数传递它来完成,但我想知道这样的事情是否可能。
编辑:我在这里重写代码时忘记写一些东西,所以我宁愿复制粘贴它,这样我现在就不会忘记任何东西。我在 Andy Prowl 的帮助下使用字符串和向量重写了它:
class CMenu {
public:
CMenu(std::vector<std::string> const& s);
protected:
std::vector<std::string> choicesStr;
};
CMenu::CMenu(std::vector<std::string> const & s) : choicesStr(s) {
// code code
}
class CGameTypeMenu : public CMenu {
public:
CGameTypeMenu();
};
CGameTypeMenu::CGameTypeMenu()
:CMenu(std::vector<std::string>("aaa","bbb")){ // This is where I
get some nasty errors
}
错误如下所示:
In file included from /usr/include/c++/4.7/vector:63:0,
from CMenu.h:13,
from CGameTypeMenu.h:11,
from CGameTypeMenu.cpp:8:
/usr/include/c++/4.7/bits/stl_uninitialized.h:77:3: required from ‘static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = const char*; _ForwardIterator = std::basic_string<char>*; bool _TrivialValueTypes = false]’
(5+ more similar lines follow)