【发布时间】:2019-02-07 20:56:42
【问题描述】:
亲爱的 StackOverFlowers,
我无法将 const char* [] 传递给对象。场景如下。
我有一个class UlamScreen,其中包含一个带有多个字符串的const char* []。 UlamScreen 还包含一个对象homeScreenMenu。
class UlamScreen {
const char* homeScreenText[5] = {"EVA dun", "Sabine", "TPU dun", "test Wout",
UlamScreenMenu homeScreenMenu;
};
class UlamScreenMenu {
private:
const char* _menuText[];
public:
UlamScreenMenu(const char*[]);
void drawMenu();
};
我想将const char* [] 传递给UlamScreenMenu,这样我就可以在名为void drawMenu 的成员函数中使用它,如下所示:
void UlamScreenMenu::drawMenu() {
for (int i = 0; i < menuItems; i++) {
tft.println(_menuText[i]);
}
}
我将它传递给UlamScreenMenu's 构造函数,如下所示:
UlamScreen::UlamScreen() : homeScreenMenu(homeScreenText) {
}
UlamScreenMenu::UlamScreenMenu(const char* menuText[], int length) {
for(int i = 0; i < length; i++) {
_menuText[i] = menuText[i];
}
}
我认为这会起作用,但由于某种原因,它不起作用。 tft.println(_menuText[i]); 与 void drawMenu 一起使用不会向我的 tft 屏幕发送任何内容。当我在 UlamScreen 类中使用 tft.println(_menuText[i]); 时,它可以完美运行。
为了清楚起见,我可以在 UlamScreenMenu 类中使用 tft 对象,因为像 tft.drawRect() 这样的其他函数可以正常工作。
这种传递const char* [] 的方式有什么问题?提前致谢。
【问题讨论】:
-
您不使用
std::string和std::vector等标准库类型的原因是什么?const char* _menuText[];也不是标准 C++ 中的有效声明 -
作为
std::vector的替代品,请参阅std::array。 -
传递
std::array或std::vector而不是 C 样式的数组。
标签: c++ string parameter-passing