void Foo(int i)
{
}
struct Bar
{
static void Foo() { Foo(1); }
};
Run Code Online (Sandbox Code Playgroud)
上面的代码没有编译.它找不到Foo(int).为什么?我知道它与具有相同的功能名称有关,但没有进一步了解问题.
为什么我需要合格的查找?
设置:
在 C# 程序中,我从 .NET C++/CLI dll 调用函数。该 dll 与本机 C++ 库具有静态链接。Visual Studio 2017 就是这样的环境。
设置:
生成 .pdb 文件,将其放置在二进制文件的文件夹中,并在附加 Visual Studio 2017 性能分析器的情况下启动程序时加载。
一位同事表示,幽灵修复加上我使用 Win7 的事实导致了这个问题。(https://superuser.com/questions/1287914/visual-studio-2013-profiler-chrashes-and-system-restarts-reboots)
我不确定我的问题与此有关...?我是否忘记了某些设置?
#include <vector>
using std::size_t;
struct Foo
{
Foo(size_t i, char c) {}
};
Foo Bar1()
{
size_t i = 0;
char c = 'x';
return { i, c }; // good
}
std::vector<char> Bar2()
{
size_t i = 0;
char c = 'x';
return { i, c }; // bad
}
Run Code Online (Sandbox Code Playgroud)
https://wandbox.org/permlink/87uD1ikpMkThPTaw
警告:将 'i' 从 'std::size_t {aka long unsigned int}' 的转换范围缩小到 { } 内的 'char'
显然它试图使用向量的初始化列表。但是为什么不使用更好的匹配vector<char>(size_t, char)呢?
我可以在 return 语句中使用所需的构造函数而无需再次写入类型吗?