例如,我得到了如下代码:
#include <iostream>
class Bar {
public:
class Foo {
public:
static void print() {
std::cout << "hello" << std::endl;
}
};
};
template<typename Type, typename MemberType>
class Test {
public:
Test() {
Type::MemberType::print();
}
};
int main() {
Bar::Foo::print();
Test<Bar, Bar::Foo> test;
}
编译时,编译器告诉我no member named 'MemberType' in 'Bar'
,它试图查找实际名称之外的文字名称“ MemberType”。
如何解决此问题?
答案 0 :(得分:1)
这行是问题
OrdinalIgnoreCase
只需将其更改为
Type::MemberType::print();
它将起作用。
问题是,当您说MemberType::print();
时,cpp编译器不会知道您的意思是发送的Type::MemberType::print();
,它只会在MemberType
内进行搜索,它是ll搜索Type
而不是MemberType
。