- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有最新的 gcc 编译器。gcc (Ubuntu 6.2.0-3ubuntu11~14.04) 6.2.0
在 code::blocks 上,我将编译器设置为默认的 GNU 编译器。
我得到的错误是这个
error: could not convert
{<expression error>}
from<brace-enclosed initializer list>
tostd::unique_ptr<int []>
问题出在我底部的头文件中。
这是我在类里面做的一个实验,我认为它上周运行良好 - 编译头文件给了我我的结果,但是当我从 arrayclass.cpp 文件构建时,它给了我这个错误。
这是我的实现文件ArrayClass.cpp:
#include "ArrayClass.h"
#include <memory>
using std::make_unique;
ArrayClass::ArrayClass(int capacity)
: arrSize{capacity},
arr{make_unique<int[]>(capacity)}
{
}
void ArrayClass::insert(int value)
{
if (currentSize < arrSize) {
arr[currentSize++] = value;
}
}
void ArrayClass::set(int i, int value)
{
if (i >= 0 && i < currentSize) {
arr[i] = value;
}
}
int ArrayClass::get(int i) const
{
if (i >= 0 && i < currentSize) {
return arr[i];
}
else {
return 0;
}
}
int ArrayClass::capacity() const
{
return arrSize;
}
int ArrayClass::size() const
{
return currentSize;
}
这是我的头文件:
#ifndef ArrayClass_header
#define ArrayClass_header
#include <memory>
using std::unique_ptr;
using std::make_unique;
class ArrayClass
{
public:
// Constructors and Destructors
// Default constructor
// POST: Created an ArrayClass object with an array of size def_size
// Compiler default suffices (see variable initializations at end of header)
ArrayClass() = default;
// Constructor
// PRE: capacity > 0
// POST: Created an ArrayClass object with an array of size capacity
// PARAM: capacity = size of the array to allocate
ArrayClass(int capacity);
// Destructor
// POST: All dynamic memory associated with object de-allocated
// ~ArrayClass();
// Set the value of the next free element
// PRE: currentSize < arraySize
// POST: Element at index currentSize set to value
// PARAM: value = value to be set
void insert(int value);
// Return an element's value
// PRE: 0 <= i < arraySize
// POST: Returned the value at index i
// PARAM: i = index of value to be returned
int get(int i) const;
// Set an element's value
// PRE: 0 <= i < arraySize
// POST: Element at index i set to value
// PARAM: i = index of element to be changed
// value = value to be set
void set(int i, int value);
// POST: Return the currently allocated space
int capacity() const;
// POST: Return the number of elements
int size() const;
// The default capacity
static constexpr int def_capacity {10};
private:
int arrSize {def_capacity};
int currentSize {0};
unique_ptr<int[]> arr {make_unique<int[]>(capacity)};
};
#endif
最佳答案
我很确定错误在这里:
unique_ptr<int[]> arr {make_unique<int[]>(capacity)};
capacity
应该改为 def_capacity
,因为到目前为止,您使用的是函数名称但没有圆括号,这会使编译器在解析时出错{}
初始化程序列表。
编辑:是的,它可以通过修复正常编译。有两个错误,第一个是“无效使用非静态成员函数 int ArrayClass::capacity() const
”。然后是初始化列表,因为编译器无法解析初始化列表。
编辑 2:在 .cpp
文件中,在构造函数定义中,capacity
似乎隐藏了 ArrayClass::capacity ()
函数,但为了清楚起见,我仍然认为最好避免这种碰撞。
关于c++ - 无法将 '(<expression error>)' 从 '<brace-enclosed initializer list>' 转换为 std::unique_ptr<int []>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39651609/
这个问题在这里已经有了答案: Why can't member initializers use parentheses? (2 个答案) 关闭 7 年前。 #include #include
我正在尝试使用宏以默认值初始化结构元素。不幸的是,我不断收到警告,但我无法找到其解决方案,任何人都可以帮助我了解我到底做错了什么吗? 注意: 我在初始化时收到警告。 我已经尝试了这两个宏,但仍然无法解
我遇到了以下结构: static struct { unsigned char a[5]; } b[] = { {1,1,1,1,1}, {2,2,
我有这个代码: #include int main(int, char **argv) { std::array a = {1,2,3}; } 这编译得很好 (-std=c++11) ,但如果
Npm 审计报告显示“发现 1 个低严重性漏洞”。 1 个漏洞需要人工审核。 Low Regular Expression Denial of Service Pack
template class Vec { T data[S]; public: constexpr Vec(const T& s) : data{s} {} }; templ
这个问题在这里已经有了答案: 12 年前关闭。 Possible Duplicates: Formatting of if Statements Is there a best coding styl
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
已更新我需要获取大括号 { } 之间的字符。 例如, a {v}" 输出:a,b 和 v 最佳答案 您可以使用 stingr 的 str_extract_all 在下面的表达式中(? a {v}{d}
我想知道是否使用 Belt and Braces (Suspenders)编程方法——尤其是数据验证——是否是好的做法。这来自以下示例。 我正在创建一个表单,并将监听器添加到所有字段中,这意味着 OK
在下面的代码中, struct X { int a; int b; void *ptr; }; class Base { public: int a; int b; void
我正在尝试做这样的事情..我有 3 个头文件 1. coordinates.h typedef struct { float x; float y; float z; }coordinat
是否可以在 C# 中退出作用域,例如可以 break 退出循环? private void a() { // do stuff here { // do more st
我正在学习 c#(和它的 OOP),我在 Visual Studio 中运行以下程序,它不断弹出一个错误,它需要一个花括号 } 我有写在这里。我想不通它为什么要那样。 using System; us
考虑以下两个带大括号的片段: switch (var) { case FOO: { x = x + 1; break; } case BAR: { y = y +
显示双花括号之间多个翻译的标签。 我在 Magento 2 的前端和后端都有这个问题。 这是我迄今为止尝试过的: 清除并刷新缓存 重新部署的静态内容 将 Magento 2.2.5 更新为 2.2.6
我看过这个问题 here . 我想知道是否存在以下缩进样式的官方名称: void fooBar(String s) { while (true) { // ... do
IE浏览器,这个: if (x > 5) return test; 总是会变成: if (x > 5) { return test; } 我不是在谈论大括号样式(Allman、GNU、Whit
这个问题已经有答案了: regular expression does not work with javascript (2 个回答) How do I replace all occurrence
scala coding standards说明 Technically, Scala’s parser does support GNU-style notation with opening br
我是一名优秀的程序员,十分优秀!