[英]C++ - Template with class function reference doesn’t compile on Android
我目前正在嘗試獲取一種特殊的模板來工作。 這是一個非常簡單的示例,可以准確顯示出問題所在。 這是模板:
template <typename ClassT, int (ClassT::*Func)() const>
class TEST
{
public:
TEST(ClassT const * selfVar) : _this(selfVar) {
}
private:
ClassT const* _this;
};
這段代碼是我項目的Entity.h文件:
int _a;
int getA() const {
return _a;
}
TEST<TestClass, &TestClass::getA> test = TEST<TestClass, &TestClass::getA>(this);
該代碼對於使用Xcode的iOS可以很好地編譯,但是對於Android則沒有,但存在以下錯誤。 在構造函數中進行初始化是沒有選擇的-我知道這是可行的,但是我需要將它作為.h文件中的單行。
這是錯誤日志:
jni/../../Classes/Entity.h:37:54: warning: extra qualification 'Entity::' on member 'getA' [-fpermissive]
TEST<Entity, &Entity::getA> yoyo = TEST<Entity, &Entity::getA>();
^
jni/../../Classes/Entity.h:37:62: error: expected ';' at end of member declaration
TEST<Entity, &Entity::getA> yoyo = TEST<Entity, &Entity::getA>();
^
jni/../../Classes/Entity.h:37:62: error: 'TEST<Entity, &Entity::getA>& Entity::getA' conflicts with a previous declaration
jni/../../Classes/Entity.h:29:9: note: previous declaration 'int Entity::getA() const'
int getA() const {
^
jni/../../Classes/Entity.h:37:66: error: expected unqualified-id before '>' token
TEST<Entity, &Entity::getA> yoyo = TEST<Entity, &Entity::getA>();
^
jni/../../Classes/Entity.h:37:45: error: wrong number of template arguments (1, should be 2)
TEST<Entity, &Entity::getA> yoyo = TEST<Entity, &Entity::getA>();
^
template <typename ClassT, int (ClassT::*Func)() const>
class TEST
{
public:
TEST(ClassT const * selfVar) : _this(selfVar) {
}
private:
ClassT const* _this;
};
struct Entity {
int _a;
int getA() const {
return _a;
}
};
class TestClass: public Entity {
void method() {
TEST<Entity, &Entity::getA> test(this);
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.