C++如何实现下面的功能?
本帖最后由 jtwc 于 2023-5-30 13:02 编辑各位老师,C++如何实现下面的功能呢?谢谢了
ThostFtdcOrderRefType order_ref; //报单编号
TThostFtdcOrderRefType myorder_ref; //新报单编号
void CustomTradeSpi::OnRspUserLogin(CThostFtdcRspUserLoginField* pRspUserLogin, CThostFtdcRspInfoField* pRspInfo, int nRequestID, bool bIsLast)
{
if (!isErrorRspInfo(pRspInfo)) {
std::cout << "=====交易账户登录成功====" << std::endl;
loginFlag = true;
std::cout << "交易日:" << pRspUserLogin->TradingDay << std::endl;
std::cout << "登录时间:" << pRspUserLogin->LoginTime << std::endl;
std::cout << "经纪商:" << pRspUserLogin->BrokerID << std::endl;
std::cout << "账户名:" << pRspUserLogin->UserID << std::endl;
//保存会话参数
trade_front_id = pRspUserLogin->FrontID; // 前置编号
session_id = pRspUserLogin->SessionID; // 会话编号
atoi(pRspUserLogin->MaxOrderRef); // 最大报单
//将下单编号初始化
//新报单编号=最大报单编号+1
myorder_ref = atoi(pRspUserLogin->MaxOrderRef) + 1;
// 投资者结算结果确认
reqSettlementInfoConfirm();
}
}
出错
//新报单编号=最大报单编号+1
myorder_ref = atoi(pRspUserLogin->MaxOrderRef) + 1;
2 IntelliSense:表达式必须是可修改的左值
需要看你的TThostFtdcOrderRefType具体定义 根据出错信息,表达式必须是可修改的左值,说明myorder_ref的类型是const或者引用类型,无法修改其值。需要将myorder_ref的类型改为非const的普通类型,例如:
```cpp
ThostFtdcOrderRefType myorder_ref; //声明为普通类型
```
同时需要确保ThostFtdcOrderRefType是C++内置的基本类型,或者是可以被赋值运算符=修改值的自定义类型。 这个问chatgpt比较好 这个错误是因为myorder_ref的类型是TThostFtdcOrderRefType,这个类型可能是一个const char*或者char,不能直接赋值,需要使用字符串拷贝函数来将新报单编号转换为相应的字符串类型。
可以使用以下代码实现:
//新报单编号=最大报单编号+1
int max_order_ref = atoi(pRspUserLogin->MaxOrderRef);
sprintf_s(myorder_ref, "%012d", max_order_ref + 1); //"%012d"表示将数字转换为12位长度的字符串,不足的用0填充
```
#include <iostream>
using namespace std;
class Calculator {
private:
float num1, num2;
public:
Calculator(float n1, float n2){
num1 = n1;
num2 = n2;
}
float add(){
return num1 + num2;
}
float subtract(){
return num1 - num2;
}
float multiply(){
return num1 * num2;
}
float divide(){
if (num2 == 0) {
throw "Division by zero error!";
}
return num1 / num2;
}
};
int main(){
float n1, n2;
cout << "Enter two numbers: ";
cin >> n1 >> n2;
Calculator calculator(n1, n2);
try {
cout << "Addition: " << calculator.add() << endl;
cout << "Subtraction: " << calculator.subtract() << endl;
cout << "Multiplication: " << calculator.multiply() << endl;
cout << "Division: " << calculator.divide() << endl;
} catch (const char* msg) {
cerr << msg << endl;
}
return 0;
}
``` myorder_ref的赋值操作问题 谢谢各位老师,已解决。
页:
[1]