问题列表 - 第14718页

访问虚拟派生类的成员/方法

这里的例子没有意义,但这基本上是我用Python编写程序的方式,现在我用C++重写它.我仍然试图在C++中掌握多重继承,我需要做的是从main到C的实例访问A :: a_print.下面你会看到我在说什么.这可能吗?

#include <iostream>
using namespace std;

class A {
    public:
    void a_print(const char *str) { cout << str << endl; }
};

class B: virtual A {
    public:
    void b_print() { a_print("B"); }
};

class C: virtual A, public B {
    public:
    void c_print() { a_print("C"); }
};

int main() {
    C c;
    c.a_print("A"); // Doesn't work
    c.b_print();
    c.c_print();
}
Run Code Online (Sandbox Code Playgroud)

这是编译错误.

test.cpp: In function ‘int main()’:
test.cpp:6: error: ‘void A::a_print(const char*)’ is inaccessible
test.cpp:21: error: within this context …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance multiple-inheritance

5
推荐指数
1
解决办法
4650
查看次数

C中的位域掩码

在C中是否有可移植的方法来在编译时找出位字段的掩码?

理想情况下,我希望能够原子地清除这样的字段:

struct Reference {
    unsigned age : 3;
    unsigned marked : 1;
    unsigned references : 4;
};

struct Reference myRef;
__sync_and_and_fetch(&myRef, age, ~AGE_MASK);
Run Code Online (Sandbox Code Playgroud)

否则我必须取消对结构的锁定,这比我想要的更重.

c atomic bit-fields

5
推荐指数
1
解决办法
1712
查看次数

Ruby:无法解析在OS X中导出为CSV的Excel文件

我正在使用Ruby的CSV库来解析一些CSV.我有一个看似格式正确的CSV文件,我通过将Excel文件导出为CSV来创建.

然而CSV.open(filename, 'r')导致一个CSV::IllegalFormatError.

文件中没有流氓逗号或引号,也没有任何我可以看到可能导致问题的内容.

我怀疑这个问题可能与行结尾有关.我能够解析通过文本编辑器(Aquamacs)手动输入的数据.就在我尝试从Excel(OS X)导出的数据时,会出现问题.当我在vim中打开导出的CSV时,所有文本都显示在一行上,并^M显示在行之间.

从文档中,似乎可以提供open行分隔符; 但我不确定在这种情况下应该是什么.

ruby csv macos

11
推荐指数
2
解决办法
6743
查看次数

强制Mac OS X 32/64位通用二进制文件仅在旧操作系统版本上运行32位?

我想发布我的桌面Mac OS X Cocoa应用程序的单个 32/64位通用二进制文件.我不想发两个版本.

我希望它在Snow Leopard上作为64位进程运行.

但是,如果应用程序是在Leopard上启动的,我想总是强制它以32位进程运行.

注意:我知道在Finder的"获取信息"窗口中,您可以单击"在32位模式下打开"复选框来实现此目的.这很好,但我真正想要的是一种自动的方式,总是Leopard上强制这种行为.在Snow Leopard上,应用程序应该运行64位,除非用户想要更改上述设置.

可以这样做吗?如果是这样,怎么样?谢谢.

macos xcode cocoa osx-snow-leopard

5
推荐指数
1
解决办法
2997
查看次数

不区分大小写的Pos

在D2010(unicode)中是否有类似Pos的类似功能不区分大小写?

我知道我可以使用Pos(AnsiUpperCase(FindString),AnsiUpperCase(SourceString))但是每次调用函数时都会通过将字符串转换为大写来增加处理时间.

例如,在1000000循环上,Pos需要78ms而转换为大写需要764ms.

str1 := 'dfkfkL%&/s"#<.676505';
  for i := 0 to 1000000 do
    PosEx('#<.', str1, 1); // Takes 78ms

  for i := 0 to 1000000 do
    PosEx(AnsiUpperCase('#<.'), AnsiUpperCase(str1), 1); // Takes 764ms
Run Code Online (Sandbox Code Playgroud)

我知道为了提高这个特定示例的性能,我可以在循环之前将字符串首先转换为大写,但我之所以想要具有不区分大小写的Pos函数的原因是从FastStrings中替换一个.我将使用Pos的所有字符串都将不同,因此我需要将每个字符串转换为大写字母.

是否有任何其他功能可能比Pos +将字符串转换为大写更快?

delphi delphi-2010

11
推荐指数
3
解决办法
2万
查看次数

Git:找到两个分支的最新共同祖先

如何找到两个Git分支的最新共同祖先?

git

787
推荐指数
4
解决办法
14万
查看次数

代码分析器:PMD和FindBugs

1.关于PMD:

1.1如何设置PMD检查,忽略其中的一些,例如"变量名太短或太长","删除空构造函数等" - 如果我这样做,会出现另一个警告,说该类必须有一些静态的方法.基本上,这个课程是空的,以便以后开发,我现在想把它留下来.

1.2遵循此警告建议是否必要?

  A class which only has private constructors should be final
Run Code Online (Sandbox Code Playgroud)

1.3那是什么意思?

 The class 'Dog' has a Cyclomatic Complexity of 3 (Highest = 17)
Run Code Online (Sandbox Code Playgroud)

1.4这个怎么样?我很乐意改变这一点,但目前关于变化的事情并没有让我想到:

Assigning an Object to null is a code smell. Consider refactoring.
Run Code Online (Sandbox Code Playgroud)

2.关于FindBugs:

2.1写入静态字段是否真的那么糟糕,比它的声明要晚一些?以下代码给了我一个警告:

Main.appCalendar = Calendar.getInstance();
Main.appCalendar.setTimeInMillis(System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)

哪里appCalendar是静态变量.

2.2此代码:

strLine = objBRdr.readLine().trim();
Run Code Online (Sandbox Code Playgroud)

发出警告:

Immediate dereference of the result of readLine()
Run Code Online (Sandbox Code Playgroud)

这里objBRdr是一个BufferedReader(FileReader).怎么会发生什么?readLine()可能是空的?代码嵌套在while (objBRdr.ready())测试中,到目前为止,我没有问题.

当我用以下代码替换代码时,Update1:​​2.2被修复了:

strLine = objBRdr.readLine();
    if (strLine != null) { …
Run Code Online (Sandbox Code Playgroud)

java eclipse eclipse-plugin findbugs pmd

7
推荐指数
1
解决办法
7671
查看次数

如何从Ruby目录中获取文件?

我想我在这里遗漏了一些东西.我有一个这样的目录:

myapp
|-lib
  |-package1
    |-dostuff.rb
  |-package2
    |-dostuff.rb

从一个irb控制台我想测试库之前,我把它添加到我的实际项目(一个Rails应用程序).但是,输入以下内容:

require 'lib/package1/dostuff'
Run Code Online (Sandbox Code Playgroud)

返回错误,说它无法找到要加载的文件.我将lib目录添加到加载路径但我无法加载该文件.

我忘记了什么?这两个文件名不必相同,但它们是如何开始的(它们是从我需要使用soap4r调用的一些Web服务自动生成的;每个包代表一个不同的Web服务API组)

ruby require

0
推荐指数
1
解决办法
261
查看次数

如何在PHP中匹配URL的域部分?

我在regexp上非常糟糕,但我正试图some/path/image.jpg摆脱http://somepage.com/some/...etc并尝试这种方法:

function removeDomain($string) {

    return preg_replace("/http:\/\/.*\//", "", $string);

}
Run Code Online (Sandbox Code Playgroud)

它不起作用 - 据我所知它只是返回一个空白字符串.我该如何写这个正则表达式?

php regex url-rewriting preg-replace

0
推荐指数
1
解决办法
2992
查看次数

打印END << END; 在C++中?

反正有没有像PHP这样的东西

print << END
yadayadayada
END;
Run Code Online (Sandbox Code Playgroud)

在C++中?(多线,非转义,易于切割和粘贴的流插入)

c++ string-literals

11
推荐指数
4
解决办法
5294
查看次数