【问题标题】:C++ generic class error, what's the problem?C++泛型类错误,有什么问题?
【发布时间】:2020-06-13 12:19:53
【问题描述】:

为什么下面的代码不能编译?

namespace mtm {
    template<class T>
    class Matrix {
    private:
    public:
        class AccessIllegalElement;

    };

    Matrix::AccessIllegalElement{};
}

我正在尝试实现处理错误的内部类

我得到的错误:

'Matrix' 不是类、命名空间或枚举

另外,如果在 AccessIllegalElement 内部我想编写一个打印非法索引的函数,那么什么是可取的?

1) 定义一个接受一个参数的函数

2) 给每个类对象一个名为 index 的成员来保存该数据

【问题讨论】:

  • 对如何解决这个问题有任何帮助吗?

标签: c++ class generics methods try-catch


【解决方案1】:

Matrix 是一个模板,而不是一个类。当你声明/定义内部项时,你需要让编译器知道这个模板的模板参数:

template <typename T>
class Matrix<T>::AccessIllegalElement {};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    相关资源
    最近更新 更多