小编sam*_*m-w的帖子

"Using"关键字用于调用基类构造函数

我有以下基类

class Grammateas
{
 public:
 Grammateas(std::string name):_name(name){};
  virtual ~Grammateas(){};
 private:
  std::string _name;
};
Run Code Online (Sandbox Code Playgroud)

和以下派生类

class Boithos final : public Grammateas
{
 public:
  //using Grammateas::Grammateas;
  Boithos(int hours):Grammateas("das"),_hours(hours){};
  virtual ~Boithos(){};
 private:
  int _hours;
};
Run Code Online (Sandbox Code Playgroud)

我想使用Base类构造函数来创建这样的对象

   Boithos Giorgakis(5); //works
   Boithos Giorgakis("something"); //Bug
Run Code Online (Sandbox Code Playgroud)

我读过我可以使用using关键字但是当我尝试使用它时

   using Grammateas::Grammateas;
Run Code Online (Sandbox Code Playgroud)

编译器返回一条消息

错误:'Grammateas :: Grammateas'的名字构造函数

你能帮我理解带有构造函数的using关键字吗?

c++ using

8
推荐指数
1
解决办法
4748
查看次数

IOS:取消注册CoreText注册的字体

我在运行时加载ttf字体并使用CoreText注册它们.稍后,当字体更新时,我从CoreText取消注册字体,从服务器下载最新版本并再次使用CoreText注册字体.

这几乎可以工作,但看起来字体是缓存的,直到我的应用程序终止并重新启动才更新.

取消注册字体并从任何缓存中删除它的正确方法是什么?

我使用此代码取消注册字体:

NSURL *url = /* My url to the font */;
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef) url);
CGFontRef newFont = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
CFErrorRef error = nil;
CTFontManagerUnregisterGraphicsFont(newFont, &error);

CGFontRelease(newFont);

if (error) {
    NSLog(@"Error unregistering font: %@", error);
}

return newFontName;
Run Code Online (Sandbox Code Playgroud)

我觉得有一件事是错的,但不知道如何解决,我是如何得到的CGFontRef.是否CGFontCreateWithDataProvider每次都创建新的引用,或者CGFontRef如果它已存在,我是否已获得已注册的引用?有没有更好的方法来获得CGFontRef已经注册的字体?

我只使用字体来创建动态UIImage实例,所以我认为没有任何标签或其他UI元素保持对字体的引用.

谢谢你的帮助!

objective-c core-text ios

8
推荐指数
1
解决办法
508
查看次数

如何使用QPainter或QPainterPath使用一个形状或一组形状连接在Qt中绘制自定义形状(如撕裂)

我有这个简单的问题,我不会画一个像撕裂的形状,但没有使用更多的一个形状(椭圆和多边形)因为QPen是为每个形状绘制,我想要的是像连接形状创建一个新的,或告诉QT跨越两个形状的边界,有关我想要看到图像的更多信息,我想创建一个这样的shabe:https://docs.google.com/open?id = 0Bxb0hT_U-KqJSHZUMTF2eFlOYzg

告诉我你是否能看到我想要的图像和理解,并感谢你的帮助.

c++ qt qpainter

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

mutex_unlock是否可用作内存栅栏?

我将描述的情况发生在iPad 4(ARMv7s)上,使用posix libs进行互斥锁定/解锁.我在其他ARMv7设备上看到了类似的东西(见下文),所以我想任何解决方案都需要更全面地了解ARMv7的互斥锁和内存栅栏的行为.

场景的伪代码:

线程1 - 生成数据:

void ProduceFunction() {
  MutexLock();
  int TempProducerIndex = mSharedProducerIndex; // Take a copy of the int member variable for Producers Index
  mSharedArray[TempProducerIndex++] = NewData; // Copy new Data into array at Temp Index 
  mSharedProducerIndex = TempProducerIndex; // Signal consumer data is ready by assigning new Producer Index to shared variable
  MutexUnlock();
}
Run Code Online (Sandbox Code Playgroud)

线程2 - 消费数据:

void ConsumingFunction () {
  while (mConsumerIndex != mSharedProducerIndex) {
    doWorkOnData (mSharedArray[mConsumerIndex++]);
  }
}
Run Code Online (Sandbox Code Playgroud)

以前(当问题出现在iPad 2上时),我认为这mSharedProducerIndex = TempProducerIndex不是原子地执行,因此改为使用 …

c mutex arm memory-barriers ipad

7
推荐指数
2
解决办法
1661
查看次数

socket connect()即使在对等重置后也返回0

我有一个iPad应用程序,我正在创建和连接posix socket.connect(...)当远程设备拒绝连接尝试时,呼叫未按预期响应.

我是如何创建和连接的简化示例socket:

struct sockaddr_in server;
server.sin_family = AF_INET;

int socket = socket(AF_INET, SOCK_STREAM, 0);
if(socket < 0)
{
  NSLog(@"socket create failed: %s", strerror(errno));
}
else if(inet_aton(mAddress, &server.sin_addr))
{
  server.sin_port = htons(mPortNumber);
  if(connect(socket, (struct sockaddr *)&server, sizeof(server)) == -1)
  {
    NSLog(@"connect() failed: %s", strerror(errno));
  }
  else
  {
    NSLog(@"connect() succeeded");
  }
}
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,上述示例有效:例如,对于正在接受连接的远程设备(以下称为"服务器"),按预期connect()返回0.对于不存在的地址,connect()一段时间的块然后返回-1,并且errnoETIMEDOUT.

从文档,如果服务器拒绝连接尝试我希望connect()返回-1errno成为ECONNREFUSED或可能ECONNRESET.相反, …

c sockets posix tcp ios

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

QAction vs QToolButton以及何时覆盖Basic类?

我最近一直在研究Qt,并提出以下问题:

  1. QAction和之间有什么区别QToolButton
  2. 我怎么知道何时覆盖QPushButton?例如,我应该覆盖以便在鼠标进入QPushButton界限时获得通知吗?我不需要为了获得signal click().

qt

6
推荐指数
1
解决办法
3144
查看次数

如何避免子类无意中重写超类私有方法

我正在写一个图书馆,可能会被那些不是我的人使用.

假设我写了一堂课:

InterestingClass.h

@interface InterestingClass: NSObject
- (id)initWithIdentifier:(NSString *)Identifier;
@end
Run Code Online (Sandbox Code Playgroud)

InterestingClass.m

@interface InterestingClass()
- (void)interestingMethod;
@end

@implementation InterestingClass
- (id)initWithIdentifier:(NSString *)Identifier {
  self = [super init];
  if (self) {
    [self interestingMethod];
  }
  return self;
}

- (void)interestingMethod {
  //do some interesting stuff
}
@end
Run Code Online (Sandbox Code Playgroud)

如果某人稍后使用该库并决定创建一个子类InterestingClass

InterestingSubClass.h

@interface InterestingSubClass: InterestingClass
@end
Run Code Online (Sandbox Code Playgroud)

InterestingSubClass.m

@interface InterestingSubClass()
- (void)interestingMethod;
@end

@implementation InterestingSubClass
- (void)interestingMethod {
  //do some equally interesting, but completely unrelated stuff
}
@end
Run Code Online (Sandbox Code Playgroud)

未来的库用户可以从公共接口看到这initWithIdentifier是超类的方法.如果他们覆盖此方法,他们可能会(正确地)假设superclass应该在子类实现中调用该方法.

但是,如果他们定义了一个方法(在子类私有接口中),该方法无意中与超类"私有"接口中的无关方法同名?如果没有它们读取超类私有接口,他们就不会知道它们不仅仅是创建一个新方法,而且还覆盖了超类中的某些东西.子类实现可能最终被意外调用,并且在调用方法时超类期望完成的工作将无法完成.

我读过的所有SO问题似乎都暗示这就是ObjC的工作方式,并且没有办法绕过它.是这种情况,还是 …

objective-c objective-c-category class-extensions

6
推荐指数
1
解决办法
1089
查看次数

给定序列中的元素,如何获取前一个元素?

假设我有一个Scala列表List("apple", "orange", "banana", "chinese gooseberry")*.我想搜索此列表并返回列表中与我已有项目相关的上一项.

例如:getPrevious(fruit: String, fruits: List[String]): Option[String]应该返回

  • Some("apple")如果我把它称为fruitarg "orange";
  • Some("banana")"chinese gooseberry";
  • None如果我调用它"apple"(没有以前的元素存在)或"potato"(不存在于列表中).

很容易完成,但我怎么能以优雅的功能方式做到这一点?我能想到的最好的是以下内容:

def previous(fruit: String, fruits: List[String]): Option[String] =
  fruits.sliding(2)
  .filter { case List(previous, current) => current == fruit }
  .toList
  .headOption
  .map { case List(previous, current) => previous }
Run Code Online (Sandbox Code Playgroud)

它有效,但它不优雅或高效.我特别讨厌转换filter迭代器toList.我怎样才能改进它?

(*作为一个旁边,是List用于sliding迭代的最佳集合?)

scala scala-collections

6
推荐指数
2
解决办法
1788
查看次数

Qt嵌入式编译错误.修复"错误:没有这样的指令"错误

我正在尝试使用安装在/ home/user/Software的angstrom工具链来编译qt 4.7.4 for beagle board.

我收到的错误是:

/corelib/arch/qatomic_arm.h:131:错误:没有这样的指令:`swpb%al,%dl,[%esi]'

我的qmake.conf文件如下:

#
# qmake configuration for building with arm-none-linux-gnueabi-g++
#

include(../../common/g++.conf)
include(../../common/linux.conf)
include(../../common/qws.conf)

# modifications to g++.conf
QMAKE_CC                = arm-angstrom-linux-gnueabi-gcc
QMAKE_CXX              = arm-angstrom-linux-gnueabi-g++
QMAKE_LINK              = arm-angstrom-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = arm-angstrom-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR                = arm-angstrom-linux-gnueabi-ar cqs
QMAKE_OBJCOPY          = arm-angstrom-linux-gnueabi-objcopy
QMAKE_STRIP            = arm-angstrom-linux-gnueabi-strip

QMAKE_LIBDIR_QT        = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/${libdir}
QMAKE_MOC              = /usr/local/angstrom/arm/bin/moc4
QMAKE_UIC              = /usr/local/angstrom/arm/bin/uic4
QMAKE_UIC3              = /usr/local/angstrom/arm/bin/uic34
QMAKE_RCC              = /usr/local/angstrom/arm/bin/rcc4
QMAKE_QDBUSCPP2XML      = /usr/local/angstrom/arm/bin/qdbuscpp2xml4
QMAKE_QDBUSXML2CPP      = /usr/local/angstrom/arm/bin/qdbusxml2cpp4

QMAKE_INCDIR          = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/include
QMAKE_LIBDIR          = /usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/lib
QMAKE_INCDIR_X11      = …
Run Code Online (Sandbox Code Playgroud)

embedded qt cross-compiling

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

在开关盒中安装开关盒是不好的做法吗?

在开关盒中安装开关盒是不好的做法吗?如果是这样,有什么替代方案?我真的不想使用if/ else if如果我不需要.

而不是做一些像:

if((this == 1) && (that == 1)){ //something }
else if((this == 1) && (that == 2)){ //something }
else if((this == 2) && (that == 3)){ //something }
Run Code Online (Sandbox Code Playgroud)

我在思考:

switch(this){
    case 1:
        switch(that){
            case 1:
                // something
            break;
            ....
        }
    break;
    ....
}
Run Code Online (Sandbox Code Playgroud)

这对我来说真的很不对劲.语法没有错,但在正确的练习方面是错误的.

javascript coding-style

5
推荐指数
2
解决办法
2231
查看次数