【问题标题】:C++ Template - Array Type Not Specified ErrorC++ 模板 - 未指定数组类型错误
【发布时间】:2016-02-21 23:07:16
【问题描述】:

我仍在努力让我的第一个模板在 C++ 中工作。我正在创建一个概率类,其中包含用于计算给定数组平均值的模板方法。我设置了这个模板,以便数组类型和大小是灵活的。

但是,我不断收到一个编译器错误,指出未指定数组类型....这让我想到“嗯,嗯”。我似乎无法解决这个问题。我不确定我的编译器设置是否配置错误,或者我是否在某处缺少分号。

我的代码贴在下面:

概率标题

#ifndef COFFEEDEVMATH_PROBABILITY_H
#define COFFEEDEVMATH_PROBABILITY_H

 class Probability
{
    public:
        Probability(void);
        template <typename T, std::size_t N>
        void ExpectedValueDataSet(const std::array<T, N>& data)
        {
            // Do nothing (place holder)
        }

     protected:
     private:
};

#endif // COFFEEDEVMATH_PROBABILITY_H

主要

#include <iostream>
#include <Probability.h>

int main()
{

    std::array<float, 4> hoor = {4, 4, 1, 1};
    Probability prob;
    //prob.ExpectedValueDataSet(hoor);

}

【问题讨论】:

    标签: c++ templates c++11


    【解决方案1】:

    只需将#include&lt;array&gt; 指令放在文件头中,为了清楚起见,放在main.cpp 中(即使在这种情况下第二个不是绝对必要的)。

    【讨论】:

    • @einpoklum 好吧,好吧,也许我应该说把它放在文件的顶部,确保在宏守卫之后。 :-)
    • 哈!这是一个简单的修复。快速提问,当我说 #include 时实际发生了什么?我认为这与调用仅添加函数和变量声明的 .h 文件不同吗? 不是指一个文件吗?
    • @Teague 它指的是作为 STL 实现的一部分的文件。你机器上的某个地方有它(至少,如果你想编译上面的代码,你必须有它!!)。
    猜你喜欢
    • 2018-05-01
    • 2012-11-11
    • 2021-12-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 2022-01-18
    相关资源
    最近更新 更多