我将 Makefile 更改为 C++11 版本,但仍然收到列表初始值设定项错误
I changed my Makefile into C++11 version, but still getting a List Initializer Error
我做了一个Makefile:
output: main.o ./source/BlackJack.o ./source/Card.o ./source/Game.o ./source/Image.o
g++ -std=c++11 main.o ./source/BlackJack.o ./source/Card.o ./source/Game.o ./source/Image.o -o BlackJack
main.o: main.cpp
g++ -std=c++11 -c main.cpp
BlackJack.o: ./source/BlackJack.cpp ./source/BlackJack.hpp
g++ -std=c++11 -c ./source/BlackJack.cpp
Card.o: ./source/Card.cpp ./source/Card.hpp
g++ -std=c++11 -c ./source/Card.cpp
Image.o: ./source/Image.cpp ./source/Image.hpp
g++ -std=c++11 -c ./source/Image.cpp
但是我仍然收到错误消息
source/Game.cpp:80:20: error: non-aggregate type 'vector<Casino>' cannot be
initialized with an initializer list
vector<Casino> casVec = {flamingo, mirage, bellagio};
我想我将编译器的版本更改为 c++11。
我错过了什么?
您的 Makefile 没有用于source/Game.o: source/Game.cpp
的条目,因此它会回退到内置规则:
.cpp.o:
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $(OUTPUT_OPTION) $<
。它不会自动编译为 C++11。
因此,您可以通过执行以下操作来显着简化您的 Makefile
CXXFLAGS += -std=c++11
并删除用于编译 CPP 文件的所有自定义规则。
您可能还想花一些时间来学习 CMake,您可以在其中定义源代码、目标和更高级别的编译选项。
相关文章:
- emplace_back初始化列表错误,当初始化列表在独立变量上工作时
- GDB 列表错误"No such file or directory"
- 数组初始值设定项必须是初始值设定项列表错误未显示
- 成员初始值设定项列表错误的统一初始化
- C 模板二进制搜索树 - 参数列表错误
- 链接列表错误 - 为什么头和尾引用指向相同地址
- 没有与参数列表错误匹配的重载函数" "实例
- C 链接列表错误:lvalue作为分配的左操作数所需
- 嵌套模板列表错误
- 邻接列表错误与列表
- 函数调用缺少参数列表错误
- 迭代子类列表错误
- gcc 中的初始化列表错误
- 转到下一个节点的C++链接列表错误
- 奇怪的模板参数列表错误太少
- 链接列表错误,c++
- c++循环列表错误
- Coderunner 2 -初始化列表错误- c++ 11
- 没有函数模板实例匹配参数列表错误
- 删除列表错误中的最后一个节点