2015-11-12 1 views
0

вот мой код, xmlDoc * d всегда сбрасывается в ноль в "EXTEST, try1"Почему shared_variable сбрасывается в ноль в GTEST

ex_test.cpp

typedef const char* str; 
class ExTest : public ::testing::Test { 
protected: 
    static str html; 
    static xmlDoc *d; 

    static void SetUpTestCase() { 
     html = "<html></html>"; 
     xmlDoc *d = xmlParseDoc((const xmlChar *) html); 
     d;//0x685a30 
    } 
}; 

str ExTest::html = NULL; 
xmlDoc *ExTest::d = NULL; 

TEST_F(ExTest, try1) { 
    d; //nil 
} 
+0

c имеет классы?! –

+0

@ machine_1 Я вызываю libxml2, это c lib – nwaicaethi

ответ

1

У вас есть две различные переменные, оба называются d.

static xmlDoc *d; <- here's one 

static void SetUpTestCase() { 
    html = "<html></html>"; 
    xmlDoc *d = ... <- here's the other 

вероятно Вы имели в виду:

d = xmlParseDoc((const xmlChar *) html); 

Это установит значение существующей d переменной, а не создавать новую.

+0

thx, он исправляет мой вопрос. – nwaicaethi

+0

@nwaicaethi было бы неплохо, если бы вы приняли этот ответ. –