我的代码如下所示.当我尝试编译时,我得到:
错误:29:38不同指针类型之间的比较QAbstractButton和QPushButton*缺少一个强制转换 - >'if(stdmetBox.clickedButton()== stdButton)'
系统:亚马逊Kindle Fire 7"运行Cyanogenmod 11.0(Android 4.4.2 Kitkat)编译器:G ++/GCC(GCC for C4droid插件版本4.9.1)IDE:C4droid与SDL,GCC和Ministro插件
任何帮助将不胜感激.我搜索过,但我能找到的唯一实例是iOS特定的.
#include <fstream>
#include <QApplication>
#include <QLabel>
#include <QMessageBox>
#include <QString>
#include <QAbstractButton>
#include <QInputDialog>
#include <QDebug>
using namespace std;
int setup()
{
string unitchar;
string unitcharo;
bool setupSuccess;
int returncode;
QMessageBox msgBox;
QMessageBox stdmetBox;
QMessageBox ynBox;
msgBox.setText("Welcome to Tyler's Fitness App! This app will help you with your fitness goals, whatever they may be. Let's get you set up!");
msgBox.exec();
QPushButton *stdButton = stdmetBox.addButton(QT_TR_NOOP("Standard"), QMessageBox::ActionRole); …Run Code Online (Sandbox Code Playgroud) 我发现自己经常围绕C风格的API编写c ++包装器,我写的一些常见的浪费代码如下:
//getSomeString() wraps C api that gets some C string from somewhere
std::string MyClass::getSomeString()
{
char buffer[BUFFER_MAX];
memset(buffer, '\0', BUFFER_MAX);
auto result = GetCApiString(buffer, BUFFER_MAX); //C style string getter
return (result == NO_ERROR) ? std::string{buffer} : ""; //Copy here
}
Run Code Online (Sandbox Code Playgroud)
但我真的想做这样的事情:
//getSomeString(): as before
std::string MyClass::getSomeString()
{
DirectStringFillIterator<char> returnString; // <--HERE. Is something like this possible?
auto result = GetCApiString(returnString, BUFFER_MAX);
return (result == NO_ERROR) ? returnString.str() : "";
}
Run Code Online (Sandbox Code Playgroud)
这样的事情可能吗?
我正在编写一个程序,我希望能够干净利地将一个字符串用引号括起来而不必做类似的事情
std::string firstString = "This is a string";
std::string myString = "\"" + firstString + "\"";
Run Code Online (Sandbox Code Playgroud)
所以我编写了几个模板函数来获取它们的参数并将它们用引号括起来.我还包括我的第一个(天真的)尝试编写一个通用的toString()函数(我知道to_string,但我也是这样做的学习).
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <typeinfo>
template <typename T>
std::string toString(const T &convert)
{
std::string returnString{""};
std::stringstream transfer;
transfer << convert;
transfer >> returnString;
return returnString;
}
template<typename T>
std::string tQuoted(const T &convert)
{
std::cout << "Called template overload" << std::endl;
return ("\"" + toString(convert) + "\"");
}
template<typename T>
std::string tQuoted(const std::string &convert)
{
std::cout << "Called std::string …Run Code Online (Sandbox Code Playgroud)