c++ - 模板继承

标签 c++ templates inheritance constructor

我有一个 C++ 类模板和另一个继承它的类。正如您将看到的,后者不是类模板。当我尝试通过调用基类(模板)的构造函数来定义派生类的构造函数时,问题就出现了。我已将错误发布在代码下方。

为简单起见,我只添加了声明。如果您觉得代码可以帮助您了解问题所在,我很乐意发布它。

状态2d.h

#ifndef STATE2D_H
#define STATE2D_H

template <typename T>
class State2D
{
public:
    State2D(unsigned int _rows, unsigned int _columns);
    State2D(unsigned int _rows, unsigned int _columns, const T& val);
    State2D(const State2D<T> &st);
    ~State2D();
    T& operator()(unsigned int i, unsigned int j);
    const T& operator()(unsigned int i, unsigned int j) const;
    unsigned int GetRowCount() const;
    unsigned int GetColumnCount() const;
    unsigned int GetAvailablePositionsCount() const;

protected:
    T** matrix;
    unsigned int rows;
    unsigned int columns;
    unsigned int availablePositions;
};

#endif // STATE2D_H

TicTacToeState.h

#ifndef TICTACTOESTATE_H
#define TICTACTOESTATE_H

#include "state2d.h"

class TicTacToeState : public State2D<char>
{
public:
    TicTacToeState();
};

#endif // TICTACTOESTATE_H

井字游戏状态.cpp

#include "tictactoestate.h"

TicTacToeState::TicTacToeState() : State2D(3,3,' ') // ERROR here; see below
{
}

error: class 'TicTacToeState' does not have any field named 'State2D' error: no matching function for call to 'State2D::State2D()' candidates are: State2D::State2D(const State2D&) [with T = char] State2D::State2D(unsigned int, unsigned int, const T&) [with T = char] State2D::State2D(unsigned int, unsigned int) [with T = char]

有什么想法吗?

最佳答案

: State2D<char>(3,3,' ')

也许吧?

关于c++ - 模板继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12460960/

相关文章:

c++ - 如何在 3D 空间中生成随机点?

c++ - 简单的网络编程程序 - 不工作

c++ - 有人能给我一个例子,说明什么时候拥有类模板的成员模板才有意义吗?

class - 使用JavaScript ES6/ES2015子类化时如何覆盖继承的方法

c++ - 进入函数前如何设置上一个数组值?

c# - 任何数据类型的大小和范围是根据什么决定的?

java - 如何在 NetBeans 7.1.1 中为日志消息创建代码模板

c++ - 如何子类化由特征选择的父类(super class)?

C++:从模板参数继承

c++ - 在 C++ 中是否可以定义一个纯虚函数?