【发布时间】:2016-01-07 14:02:52
【问题描述】:
我有一个对象,它将向量作为它的构造函数参数之一。到我完成时,我将在 12 个文件中的每个文件中拥有大约 1000 个这些对象(包含在一个向量中),并且我一直在尝试布局。我能找到的最佳工作方式是在对象定义中创建所有参数。
这是该结构的基本版本:
struct MyObject {
MyObject (vector<int>);
vector<int> paraList;
}
所以我的对象定义看起来像这样:
MyObject object1 ( {0, 1, 2} );
MyObject object2 ( {0, 3, 1} );
MyObject object3 ( {5, 7, 5, 6} );
MyObject object4 ( {4} );
这可行,但我真正想做的是在向量定义中构造对象。像这样:
vector<MyObject> objectList {
( {0, 1, 2} ),
( {0, 3, 1} ),
( {5, 7, 5, 6} ),
( {4} )
};
感觉应该可以,但没有。我明白了:
error: expected primary-expression before '{' token error: expected ')' before '{' token error: expected '}' before ')' token
如果可能的话,我觉得我的语法是正确的,那么我试图做的事情是不可能的?
编辑:
抱歉,除了一些拼写错误外,我不确定为什么这是题外话。我一直在阅读规则,但我仍然不确定,您能否评论或 PM 我我做错了什么,以便我将来避免它?这不是抱怨,只是想确保我做对了。
【问题讨论】:
-
去掉圆括号。
-
你这个枪的儿子!在我尝试过的所有事情中,在谷歌搜索之后。非常感谢,请随时将其添加为答案,以便我打勾:D
-
嗯,现在最后的 } 有问题;在列表的末尾。有什么想法吗?
-
解释一下,由印刷错误引起的问题是题外话。你有一个你不应该有的开放括号,这就是问题的全部。由于拼写错误不太可能对未来的用户有所帮助,因为它们是小问题、易于修复且非常具体,因此被认为是题外话。
-
啊,我想我们有误会。我不知道怎么做我之前问的,我只是尝试了一些看起来应该可行的想法。我用谷歌搜索了一下,但很难找到任何解释这个特定问题的东西。另外,我使用了错误的括号,最终简单地删除括号实际上并没有用,我需要额外的花括号。所以这并不是一个错字,而是缺乏专业知识。
标签: c++ c++11 vector arguments initializer-list