如何使用FIX类型实现类

时间:2014-07-29 19:34:29

标签: c++ linux gcc quickfix

这是一个有效的代码

#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;
                 ^

知道什么是错的以及如何解决它?

2 个答案:

答案 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;
}