这是一个有效的代码
#include "quickfix/FixFields.h"
#include "quickfix/Values.h"
int main()
{
FIX::BeginString beginString(FIX::BeginString_FIX42);
return 0;
}
它编译,如果我打印beginString的值,我得到预期的结果。
现在我想实现一个类型相同的类
#include "quickfix/FixFields.h"
#include "quickfix/Values.h"
class A {
FIX::BeginString beginString;
public:
A()
{
beginString = FIX::BeginString_FIX42;
}
};
int main()
{
return 0;
}
此代码无法编译,编译错误为
test.cpp: In constructor ‘A::A()’:
test.cpp:9:17: error: no match for ‘operator=’ (operand types are ‘FIX::BeginString’ and ‘const char [8]’)
beginString = FIX::BeginString_FIX42;
^
知道什么是错的以及如何解决它?
答案 0 :(得分:0)
FIX :: BeginString_FIX42是一个常见的猜测。当你定义一个我猜你想做的函数时,你需要指定一个值的类型而不是一个值。 BeginString是一个类型BeginString_FIX42是一个常量,它告诉begin string返回哪个版本的begin。
答案 1 :(得分:0)
正如Mike Seymour所建议的那样,当转换运算符存在但是赋值不存在时,可以使用构造函数的初始化列表。
#include "quickfix/FixFields.h"
#include "quickfix/Values.h"
class A {
FIX::BeginString beginString{FIX::BeginString_FIX42};
};
int main()
{
return 0;
}