gpt4 book ai didi

c++ - 非静态数据成员初始化器问题

转载 作者:IT老高 更新时间:2023-10-28 22:38:44 29 4
gpt4 key购买 nike

我从主干版 GCC-4.7.0 构建了 MinGW:http://code.google.com/p/mingw-builds/downloads/list

在此版本更改的描述中,据说实现了非静态数据成员初始化器:http://gcc.gnu.org/gcc-4.7/changes.html

http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm

当我尝试编译这样一个例子时:

#include <iostream>
#include <string>

struct type {
type()
:i(33)
{}

int i;
std::string s("string");
};

int main() {
type t;
std::cout << t.i << " : " << t.s << std::endl;
}

我得到了很多错误,最后是这个:

main.cpp:16:35: note: 'std::string (type::)(int) {aka std::basic_string (type::)(int)}' is not derived from 'const std::basic_string<_CharT, _Traits, _Alloc>' main.cpp:16:35: note: could not resolve address from overloaded function 't.type::s'

但是根据文档,代码是正确的。

最佳答案

问题似乎是在确定您是声明函数还是对象以及编译器正在选择函数时模棱两可。

您应该尝试使用以下语法初始化字符串:

std::string s = "string";

如果我们点击 GCC 发行说明中有关非静态数据成员初始化程序 (proposal N2756) 的链接,他们会在问题 1 中提到这一点,并附上解决说明:

CWG had a 6-to-3 straw poll in Kona in favor of class-scope lookup; and that is what this paper proposes, with initializers for non-static data members limited to the “= initializer-clause” and “{ initializer-list }” forms.

关于c++ - 非静态数据成员初始化器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7674357/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com