小编Mag*_*s W的帖子

即使没有任何更新,也始终为目标"all"运行

我有这些文件

  • TEST.CPP
  • Point.h
  • Point.cpp
  • Triangle.h
  • Triangle.cpp

我希望有一个makefile,允许我构建每个类,PointTriangle通过发出make Pointmake Triangle在需要时(标题或源文件已更改)单独构建.如果需要,make all应编译所有内容并构建输出程序Test.

这是我到目前为止所提出的:

CXX=g++
CXXFLAGS=-std=c++11 -Wall -pedantic
OBJS=Test.o Point.o Triangle.o

all : $(OBJS)
    $(CXX) $(CXXFLAGS) $(OBJS) -o Test


Point.o : Point.cpp Point.h
    $(CXX) $(CXXFLAGS) -c Point.cpp

Point : Point.o


Triangle.o : Triangle.h Triangle.cpp Point.h
    $(CXX) $(CXXFLAGS) -c Triangle.cpp

Triangle : Triangle.o


clean:
    \rm *.o Test


.PHONY : Point Triangle
Run Code Online (Sandbox Code Playgroud)

它似乎工作,但问题是,当我运行make all(或只是make)多次运行命令,即使没有任何变化,给出以下输出:

g++ -std=c++11 -Wall -pedantic Test.o …
Run Code Online (Sandbox Code Playgroud)

c++ makefile

4
推荐指数
2
解决办法
130
查看次数

显示键盘时,活动未调整大小

我有一个简单的活动,EditText在它下面显示一个大的多线和一些其他控件.我希望活动调整大小,以便在用户输入时键盘不会隐藏按钮EditText.

我尝试过在网上找到的各种粗略和非粗略的解决方案 - 没有任何效果.

这是我到目前为止所尝试的:

  • android:windowSoftInputMode="adjustResize"在清单中.
  • android:fitsSystemWindows="true"布局中的根.
  • 使用RelativeLayoutvs LinearLayout作为root.
  • 从活动中删除了所有主题
  • 创建了一个自定义主题并放入<item name="android:windowFullscreen">false</item>其中.
  • 这里尝试了所提出的解决方案,我的整个活动布局在一个ScrollView.

有什么可以尝试的吗?

android android-layout android-softkeyboard android-activity

4
推荐指数
1
解决办法
726
查看次数

使容器增长以适应列中同级的宽度

Container在 a 中有两个小部件Column,每个小部件都包含一个Text小部件。我希望Container文本最短的 展开以匹配包含较长文本的另一个容器的宽度。具有较长文本的容器应包装Text小部件及其填充。

如果不诉诸容器上的固定宽度,我就无法让它工作:

return Column(
    mainAxisSize: MainAxisSize.min,
    children: [
        // This container has a shorter text than its sibling, so it should expand 
        // its width to match its sibling/parent
        Container(
            alignment: Alignment.center,
            width: 50, // I don't want this fixed width
            decoration: BoxDecoration(color: Colors.orange, borderRadius: BorderRadius.only(topLeft: Radius.circular(4), topRight: Radius.circular(4))),
            child: Padding(
                padding: const EdgeInsets.fromLTRB(8,4,8,4),
                child: Text('short'),
            )
        ),

        // This container has a longer text, so it …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-layout

4
推荐指数
1
解决办法
1044
查看次数

将视图底部与 ConstraintLayout 的中心对齐

我有一个自定义视图,我想将它放在 a 中ConstraintLayout,使其底部位于ConstraintLayout.

子视图具有动态高度wrap_content,因此我无法轻松设置固定边距或填充。

我知道我可以将视图的中心与ConstraintLayout使用的中心对齐

    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
Run Code Online (Sandbox Code Playgroud)

但正如我所说,我想将视图的底部与ConstraintLayout.

有什么好的方法来实现这一点吗?

android android-layout android-view android-constraintlayout

3
推荐指数
1
解决办法
3734
查看次数

是否在编译器优化的同一语句中多次调用同一方法?

假设我在Java 8中做了类似的事情(特别是Android)

String name = someObject.getName() != null ? someObject.getName() : "null";
Run Code Online (Sandbox Code Playgroud)

并且该方法getName()可能会有很多调用其他方法来解析名称.还假设我经常调用这段代码.

做这样的事情会更好,性能更好吗?

String name = someObject.getName();
name = name != null ? name : "null";
Run Code Online (Sandbox Code Playgroud)

java optimization android compiler-optimization java-8

3
推荐指数
1
解决办法
85
查看次数

使用std :: copy而不是manual for循环复制动态数组的好处是什么?

假设我有以下代码:

int* intPtr = new int[5];

// ...do stuff...
Run Code Online (Sandbox Code Playgroud)


现在,我想将intPtr复制到一个相同的新数组中:

int* newIntPtr = new int[5];
Run Code Online (Sandbox Code Playgroud)


这可以使用简单的for循环或std :: copy()来完成:

  1. 使用for循环

    for (int i = 0; i < 5; i++)
        *(newIntPtr + i) = *(intPtr + i);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用std :: copy()

    std::copy( intPtr, intPtr + 5, newIntPtr );
    
    Run Code Online (Sandbox Code Playgroud)


使用std :: copy(),我在Visual Studio中收到警告:

warning C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe...
Run Code Online (Sandbox Code Playgroud)


可以使用stdext::checked_array_iterator<int*>,使报警消失:

std::copy(intPtr, intPtr + 5, stdext::checked_array_iterator<int*>(newIntPtr, 5));
Run Code Online (Sandbox Code Playgroud)

但这意味着代码将无法在Visual Studio之外的任何其他语言上编译。

那么,我该如何解决呢?我应该使用简单的for循环并有效地避免该警告,还是应该使用std :: copy()并采取某些措施来避免该警告?显然,我可以禁用该警告,但这似乎不是一个适当的解决方案……或者是吗?

c++ arrays deep-copy visual-studio c++11

2
推荐指数
1
解决办法
2014
查看次数

方法参数的 UML 图

假设我有以下代码:

class A {
public:
    void doSomething(B* b);
}

class B {
}
Run Code Online (Sandbox Code Playgroud)

我将如何在 UML 图中描述这一点?我的第一个想法是 A 使用 B,所以从 A 到 B 应该有一条虚线。 但是在一些学校论文中(这是学校作业报告中很小的一部分),他们似乎使用了聚合符号(空菱形和实线)。

这对我来说似乎不对——如果 A 实际上包含一个指向 B 的指针作为成员,那似乎是对的。但是当只有某些方法使用指向 B 的指针,并且不将其存储在任何成员变量中时,这似乎是错误的。

这里有什么?

(我可以问我的老师,但他们通常需要很长时间才能回答此类问题……老实说,我更信任 Stackoverflow 的集体智囊团 :))

c++ uml class-diagram aggregation

2
推荐指数
1
解决办法
1203
查看次数

如何在 Dart 中创建矩阵?

我有一个List<String>,我想创建一个Set<String>与长度相同维度的方阵(二维数组/列表)List<String>.

我尝试使用

List.filled(entries.length, List.filled(entries.length, Set<String>()));
Run Code Online (Sandbox Code Playgroud)

但问题是,我的矩阵的每一行似乎都指向同一个列表实例,因此更改一行中的值也会更改所有其他行中的值。

所以我尝试了

List.filled(entries.length, List.from(List.filled(entries.length, Set<String>())));
Run Code Online (Sandbox Code Playgroud)

但我仍然有同样的问题。最终我投降并诉诸于

List<List<Set<String>>> matrix = [];

for(int i=0; i<entries.length; i++) {
    List<Set<String>> row = [];
    for (int n = 0; n<entries.length; n++) {
        row.add(Set<String>());
    }
    matrix.add(row);
}
Run Code Online (Sandbox Code Playgroud)

它有效,但它很丑陋。有没有更干净的方法来做到这一点?

collections dart flutter

2
推荐指数
1
解决办法
1085
查看次数

StatelessWidget 可以包含成员变量吗?

我有一个StatelessWidget使用 aScopedModel来存储其数据的。该小部件基本上呈现了复选框列表和一些用于保存复选框状态的按钮。

现在我想跟踪用户是否更改了任何复选框,即自显示小部件以来选中/取消选中它们。所以我添加了这样的内容:

class MyCheckboxScreen extends StatelessWidget{

    bool _hasBeenModified = false;

    void _itemCheckedChange(bool checked, MyModel model){
        _hasBeenModified = true;

        // Code to change the model here
    }


    void _onCloseButton(){
        if( _hasBeenModified ){
            // Show a warning that there are modifications that will not be be saved
        }
    }


    void _onSaveButton(Context context, MyModel model){
        model.save();
        Navigator.of(context).pop();
    }

}
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但我的StatelessWidgetnow 包含它自己的状态。

该状态不用于更新 UI 和重绘任何内容,它仅用于在按下“关闭”按钮时检查任何复选框是否有修改。

StatelessWidgeta拥有这种内部状态安全吗?或者这可能是一个问题?例如,小部件是否会意外重新创建,并且内部状态丢失?

我发现文档对此不是很清楚,它只是说

对于可以动态更改的组合,例如由于具有内部时钟驱动状态或取决于某些系统状态,请考虑使用 StatefulWidget。

但这听起来似乎只适用于影响 UI 并需要重建小部件的状态。

flutter statelesswidget flutter-widget flutter-state

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

如何在 Delphi 应用程序中丢弃未处理的事件消息?

我在 Delphi 应用程序中执行一些 HTTP 请求时显示“请稍候”表单。“请稍候”对话框Application.ProcessMessages在关闭时调用。

这似乎会产生一些不良后果。例如,如果用户点击“请稍候”对话框后面表单中的按钮,这些点击似乎被添加到事件队列并在Application.ProcessMessages执行时处理,即使按钮在显示对话框之前被禁用并在隐藏后再次启用它。

所以我想知道是否有任何方法可以在显示“请稍候”对话框时完全忽略整个应用程序的鼠标单击事件?我发现我可以设置Enabled整个表单以False防止该特定表单上的鼠标单击事件,但其他表单Application.ProcessMessages在执行时仍会收到鼠标单击事件。

有没有标准的方法来做到这一点?无论是像(假设伪代码)Application.Enabled := FALSEApplication.DiscardMessages

修改“请稍候”对话框的行为(删除对 的调用Application.ProcessMessages)不在我的控制范围内 - 它是在各个地方使用的标准全公司对话框。

delphi

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

分配空数组和使用 SetLength(arr, 0) 有什么区别?

清空数组时,以下替代方案之间是否有任何需要注意的区别?

假设arr是一个TArray<string>

  SetLength(arr, 0);
Run Code Online (Sandbox Code Playgroud)

或者

  arr := [];
Run Code Online (Sandbox Code Playgroud)

它们是相同的,但我的 Delphi 有点生疏了,我似乎记得在几个月前看似有效的代码之后,微妙的“特性”又回来困扰着我......

delphi

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

用户关闭特定首选项屏幕时运行一些代码?

有没有办法找出用户关闭特定首选项屏幕的时间?当用户在我的某个偏好设置屏幕中更改了偏好设置时,我需要进行一些更新.不是当用户点击实际的复选框时,而是当他们按下后退按钮并完成编辑首选项时.

到目前为止,我能够找到的是我可以覆盖我的PreferenceActivity的onPause()事件,这似乎发生在用户关闭首选项时.它有效,但我不确定这是解决问题的最佳方法.有什么建议?

编辑

我无法弄清楚如何从PreferenceActivity中实际调用我的主要活动的方法.尝试玩putExtra()和各种各样的东西.最终我想 - 为什么不完全相反?所以我在主活动中实现了onResume()方法.当用户关闭首选项时,可以很好地处理这些事情,而且每次我恢复应用程序时,我都可以使用我的更新方法运行的事实.

android sharedpreferences

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