簡體   English   中英

c2797成員初始化程序列表中的列表初始化或未實現的非靜態數據成員初始化程序

[英]c2797 List initialization inside member initializer list or non static data member initializer not implemented

嘗試編譯項目時,Visual Studio 2013中出現以下錯誤。

c2797:成員初始化程序列表內的列表初始化或未實現的非靜態數據成員初始化程序

這是引發上面的編譯器錯誤的代碼段。

==== sample.h ====

enum class Process
{


  TUNNEL_IP_VERSION,  // Tunnel::IPVersion::Type
  PADDING_BYTE,
  IP_ADDRESS_FIT_ACTUAL_SIZE,
  IP_ADDRESS_FIT_IPv6_SIZE,
  PORT_NUMBER,
};

using ProcessingOrder = std::vector<Process>;

const ProcessingOrder m_ProcessingOrder =
{


  Process::TUNNEL_IP_VERSION,
  Process::PADDING_BYTE,
  Process::IP_ADDRESS_FIT_IPv6_SIZE,
  Process::PORT_NUMBER
};

盡管VS2013支持c ++ 11功能-初始化列表,但為什么會出現上述錯誤! 如何在這種情況下下車? 我需要在代碼中進行哪些更改以解決此問題?

感謝您的回答。 效果很好。 對於下面的陳述,我也有類似的情況。

m_Attribute{SSL_CTX_new(g_SSLChoice[version].m_pfSSLMethod()), 0, 0}
  {

m_Attribute在哪里,

struct{
         SSL_CTX* const m_pContext;
         Socket* m_pSocket;
         X509* m_pCertificate;
         }m_Attribute;

SSL_CTX_new,是ssl.have中的標准定義
g_SSLChoice是,

g_SSLChoice[CloudSSL::TLSv1_2 + 1] =
  {
    /* [SSLv23] = */ {&SSLv3_client_method, 0},
    /* [SSLv3] = */ {&SSLv23_client_method, SSL_OP_NO_SSLv2},
    /* [TLSv1] = */ {&TLSv1_client_method, SSL_OP_NO_SSLv3},
    /* [TLSv1_1] = */ {&TLSv1_1_client_method, SSL_OP_NO_TLSv1},
    /* [TLSv1_2] = */ {&TLSv1_2_client_method, SSL_OP_NO_TLSv1_1}
  };

在其中

class CloudSSL : public Util::Thread
  {

public: enum Version
        {
          // SSLv2,  // Not supported
          SSLv23,
          SSLv3,
          TLSv1,
          TLSv1_1,
          TLSv1_2
        };

最后m_pfSSLMethod是const SSL_METHOD *(* m_pfSSLMethod)();

Visual Studio尚未實現此功能。 可以在這里找到解決方法

你可以用

const ProcessingOrder m_ProcessingOrder = ProcessingOrder
{
  Process::TUNNEL_IP_VERSION,
  Process::PADDING_BYTE,
  Process::IP_ADDRESS_FIT_IPv6_SIZE,
  Process::PORT_NUMBER
};

對於第二種情況。

struct Attribute_t{
         SSL_CTX* const m_pContext;
         Socket* m_pSocket;
         X509* m_pCertificate;
         }m_Attribute;

然后就

m_Attribute = Attribute_t{SSL_CTX_new(g_SSLChoice[version].m_pfSSLMethod()),
0, 0}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM