javascript

git

python

java

github

django

c#

reactjs

loops

git-remote

spring

annotations

terminology

list

local-storage

pandas

performance

system.out

git-reset

regex

为什么不使用using声明来解决钻石问题?

请考虑以下代码:

struct A
{
    void f()
    {
    }
};

struct B1 : A
{
};

struct B2 : A
{
};

struct C : B1, B2
{
    void f() // works
    {
        B1::f();
    }
    //using B1::f; // does not work
    //using B1::A::f; // does not work as well
};

int main()
{
    C c;
    c.f();

    return 0;
}

恳请您不要复制粘贴有关如何解决钻石问题的标准答复(“使用虚拟继承”)。 我要问的是在这种情况下为什么不使用使用声明。 确切的编译器错误是:

In function 'int main()':
prog.cpp:31:6: error: 'A' is an ambiguous base of 'C'
  c.f();

我得到了一个使用声明可以从此示例工作的印象:

struct A
{
    void f()
    {
    }
};

struct B
{
    void f()
    {
    }
};

struct C : A, B
{
    using A::f;
};

int main()
{
    C c;
    c.f(); // will call A::f

    return 0;
}
trans by 2020-01-22T07:29:29Z

c# - 找不到类型或命名空间名称

这个问题在这里已有答案:

  • 获取“类型或命名空间名称无法找到”但一切似乎都好吗?                                     30个答案

我有一个VS 2010解决方案,其中包含Visual Studio 2010中的多个项目。一个是测试项目(我称之为“PrjTest”),另一个是Windows Forms Application项目(我称之为“PrjForm”)。 还有一个由PrjForm引用的第三个项目,它能够成功引用和使用。

PrjForm引用PrjTest,而PrjForm有一个带有VS 2010语句的类:

using PrjTest;
  1. 参考已正确添加
  2. VS 2010语句正确到位
  3. 拼写是正确的
  4. PrjTest构建成功
  5. PrjForm几乎构建,但在VS 2010行中出现错误:

找不到类型或命名空间名称'PrjTest'(您是否缺少using指令或程序集引用?)

我尝试过以下方法来解决这个问题:

  1. 删除了Resharper(因为Resharper在识别引用的项目时没有遇到任何麻烦,我认为它可能值得一试)
  2. 删除并重新添加了引用和using语句
  3. 从头开始重新创建PrjForm
  4. PrjForm目前驻留在PrjTest文件夹中,我尝试将其移动到外部文件夹
  5. 使用VS 2010的新副本在另一台计算机上加载解决方案

我做完了我的功课,花了很长时间在线寻找答案,但这些解决方案都没有帮助。

我还能尝试什么?

trans by 2019-01-03T08:13:09Z

c ++ - 为什么“使用命名空间std”被认为是不好的做法?

其他人告诉我,在代码中编写using namespace std是错误的,我应该直接使用stdstd::cin

为什么using namespace std被认为是不好的做法? 是低效还是冒着声明模糊变量(与std命名空间中的函数具有相同名称的变量)的风险? 它会影响性能吗?

trans by 2018-11-26T14:40:25Z

1 共1页