失败,dummy_array<int, 6> arr();
Fail with dummy_array<int, 6> arr();
问题是数组的声明。
我们可以评论
#include <cstdlib>
#include <fstream>
#include <iostream>
#include <vector>
#include <list>
template <typename Type, size_t const SIZE>
class dummy_array {
Type data[SIZE] = {};
public:
dummy_array(){}
~dummy_array(){}
Type& operator[](size_t const index)
{
if (index < SIZE)
return data[index];
throw std::out_of_range("index out of range");
}
Type const& operator[](size_t const index) const
{
if (index < SIZE)
return data[index];
throw std::out_of_range("index out of range");
}
};
int main()
{
{
dummy_array<int, 6> arr();
arr[0] = 1;
arr[1] = 2;
for (int i = 0; i < 6; i++)
std::cout << arr[i] << " " ;
std::cout << std::endl;
}
return 0;
}
有人可以解释为什么用"dummy_array arr((;"声明会导致失败,如下所示。构建日志 :
main.cpp: In function 'int main()':
main.cpp:34:12: error: pointer to a function used in arithmetic [-Wpointer-arith]
arr[0] = 1;
^
主.cpp:34:16:错误:分配只读位置"* arr">
arr[0] = 1;
^
main.cpp:35:12: 错误: 指向算术中使用的函数的指针 [-Wpointer-arith]
arr[1] = 2;
^
主.cpp:35:16:错误:分配只读位置"*(arr + 1(">
arr[1] = 2;
^
main.cpp:38:27:错误:指向算术中使用的函数的指针 [-Wpointer-arith]
std::cout << arr[i] << " " ;
^
dummy_array<int, 6> arr();
这可以看作是函数声明或变量声明。
编译器总是更喜欢函数声明而不是变量声明,因此您实际上声明了一个名为 arr 的函数,不带任何参数并返回dummy_array。请改用这个:
dummy_array<int, 6> arr{};
相关文章:
- arr[-1]在c++中的奇怪行为
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- EASTL矢量<向量<int>>连续的
- 在C++中用新表达式制作 arr[n][n]
- different between int **arr =new int [ n]; and int a[i][j]?
- arr[n] 是否以 C++ 为单位打印数组的长度?
- 为什么存储在数组中的地址值与其自己的地址相同,它应该指向某个不同的地址(&arr[0])?
- C++:' arr '和' arr[] '有什么区别
- 在 C/C++ 中将数组作为形式参数作为 int arr[] 和 int arr[N] 传递的区别
- 为什么 arr[i++] 与 arr[i]++ 会这样做?
- 这段代码中的arr[s[i]-'a']有什么用,为什么我们用"a"减去所有字符?
- 澄清了 strcpy() 在像这样初始化字符数组时的工作 *Arr.
- 如何理解"vector<int> avector (arr, arr + sizeof(arr) / sizeof(arr[0]) )"?
- 声明数组>> int arr[] 时出错;在C++(虽然在 Java 中有效)?
- 矢量<bool> arr 重置问题
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 根在 arr[0] 的二进制堆有什么好处
- arr[i] = i++ 和 i = i + 1 语句在 C 和 C++ 中的行为
- 访问函数中 const char *arr[] 的元素
- C 字符串比较“祝您好运”&gt;“再见”