相关疑难解决方法(0)

无效使用不完整类型

我正在尝试在项目中使用子类的typedef,我在下面的示例中已经分离了我的问题.

有谁知道我哪里出错了?

template<typename Subclass>
class A {
    public:
        //Why doesn't it like this?
        void action(typename Subclass::mytype var) {
            (static_cast<Subclass*>(this))->do_action(var);
        }
};

class B : public A<B> {
    public:
        typedef int mytype;

        B() {}

        void do_action(mytype var) {
            // Do stuff
        }
};

int main(int argc, char** argv) {
    B myInstance;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出:

sean@SEAN-PC:~/Documents/LucadeStudios/experiments$ g++ -o test test.cpp
test.cpp: In instantiation of ‘A<B>’:
test.cpp:10:   instantiated from here
test.cpp:5: error: invalid use of incomplete type ‘class B’
test.cpp:10: error: forward …
Run Code Online (Sandbox Code Playgroud)

c++ templates typedef crtp

53
推荐指数
2
解决办法
10万
查看次数

标签 统计

c++ ×1

crtp ×1

templates ×1

typedef ×1