所有,我在我的mac os x 10.8中编写了这样的代码,当我使用"gcc use_new.cpp -o use_new"来编译它时,它会抛出错误的消息,如下所示:
Undefined symbols for architecture x86_64:
"std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))", referenced from:
_main in ccr2vrRQ.o
"std::basic_ostream<char, std::char_traits<char> >::operator<<(void const*)", referenced from:
_main in ccr2vrRQ.o
"std::basic_ostream<char, std::char_traits<char> >::operator<<(double)", referenced from:
_main in ccr2vrRQ.o
"std::basic_ostream<char, std::char_traits<char> >::operator<<(int)", referenced from:
_main in ccr2vrRQ.o
"std::basic_ostream<char, std::char_traits<char> >::operator<<(unsigned long)", referenced from:
_main in ccr2vrRQ.o
"std::ios_base::Init::Init()", referenced from:
__static_initialization_and_destruction_0(int, int) in ccr2vrRQ.o
"std::ios_base::Init::~Init()", referenced from:
__static_initialization_and_destruction_0(int, int) in ccr2vrRQ.o
"std::cout", referenced from:
_main in ccr2vrRQ.o
"std::basic_ostream<char, …
Run Code Online (Sandbox Code Playgroud) 是否可以在专用模板类中访问非类型模板参数的值?
如果我有专门化的模板类:
template <int major, int minor> struct A {
void f() { cout << major << endl; }
}
template <> struct A<4,0> {
void f() { cout << ??? << endl; }
}
Run Code Online (Sandbox Code Playgroud)
我知道上面的情况,硬编码值4和0而不是使用变量很简单,但我有一个更大的类,我是专门的,我希望能够访问值.
在A <4,0>中是否可以访问major
和minor
值(4和0)?或者我必须在模板实例化时将它们分配为常量:
template <> struct A<4,0> {
static const int major = 4;
static const int minor = 0;
...
}
Run Code Online (Sandbox Code Playgroud)