[英]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
};
感謝您的回答。 效果很好。 對於下面的陳述,我也有類似的情況。
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.