2017-01-12 34 views
1

我在C++中编写代码,我试图了解静态变量。
当我写我的实践代码,我得到这个错误信息:架构x86的未定义符号

Undefined symbols for architecture x86_64:
"pizza::firstLetterFavPizza", referenced from:
pizza::favPizzaFirstLetterChan(char) in main.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

请帮帮忙!我不知道什么是错的。源代码在这里:

#include <iostream> 
class pizza 
{ 
public: 
    static char firstLetterFavPizza; 

    char favPizzaFirstLetterChan (char letter = firstLetterFavPizza) 
    { 
    pizza::firstLetterFavPizza = letter; 
    return pizza::firstLetterFavPizza; 
    } 
}; 

int main() 
{ 
    pizza *a = new pizza(); 
    pizza *b = new pizza(); 
    std::cout << a->favPizzaFirstLetterChan('c') << std::endl; 
    delete a; 
    std::cout << b->favPizzaFirstLetterChan('b') << std::endl; 
    delete b; 
    return 0; 
}; 

回答

1

你已经声明了静态数据成员,但没有定义它。在某处(在全局名称空间中)将代码添加到代码中:

char pizza::firstLetterFavPizza;