我正在使用960.gs网格系统进行设计.在两个盒子之间添加细分离垂直线的最佳方法是什么?宽度和颜色应可调节.
我的计划是定义几个具有绝对位置和背景颜色的div类,每个可能位置一个,并使用JQuery确保它与周围的框具有相同的高度.但这看起来有点复杂.有更好的解决方案吗?
如果我不使用new分配类的数据成员,是否还需要在析构函数中进行清理?例如,在下面的例子中,我需要delete向量吗?还是依赖于MyType?
class A {
A();
~A();
MyType x;
std::vector<MyType> v;
};
A::A() {
x = MyType(42);
v = std::vector<MyType>(5);
}
A::~A() {
// what goes here?
}
Run Code Online (Sandbox Code Playgroud) 如果我已经正确理解了枚举,一个很好的例子就是使用它们来存储扑克牌套件,而不是四个魔术数字或四个静态最终整数.
public class Card {
// ...
private enum CARD_SUITE { HEARTS, DIAMONDS, CLUBS, SPADES; }
}
Run Code Online (Sandbox Code Playgroud)
但是,如果公共方法Card需要套件作为参数,例如isSuite(CARD_SUITE suite)?枚举对于类来说是私有的.为该单行创建新文件感觉非常不必要.这是怎么解决的?
get_number()返回一个整数.我将调用它30次并计算返回的不同整数的数量.我的计划是将这些数字放入std::array<int,30>,然后对其进行排序std::unique.
这是一个好的解决方案吗?还有更好的吗?这段代码将成为我程序的瓶颈.
我认为应该有一个基于散列的解决方案,但是当我只有30个元素时,它的开销可能太大了?
编辑我改变了唯一的不同.例:
{1,1,1,1} => 1
{1,2,3,4} => 4
{1,3,3,1} => 2
Run Code Online (Sandbox Code Playgroud) MISRA 2004规则5.1规定所有标识符必须具有唯一的前31个字符.这条规则的原因是什么?这是某些编译器的技术限制吗?
我想删除此代码中的重复:
printf( "%.2f: %s\n", 440.00f, "A4" );
printf( "%.2f: %s\n", 523.25f, "C5" );
printf( "%.2f: %s\n", 880.00f, "A5" );
printf( "%.2f: %s\n", 1046.50f, "C6" );
Run Code Online (Sandbox Code Playgroud)
我的计划是列出一对并循环它.是否可能和一个好的解决方案,或者我应该只制作两个数组?
库中的函数返回a Number.我无法将其转换为可用的任何内容("无法从Number转换为int")并且无法使用它进行打印String.format.我该如何处理Number?
这个函数由API给我:
void GetTime(uint8_t*, uint8_t*, uint8_t*, uint8_t*, uint8_t*, uint8_t* );
Run Code Online (Sandbox Code Playgroud)
GetTime通过写入这些指针返回时间.问题是,我只需要写入其中一个指针的值.如果我可以控制,GetTime我要么检查指针是否NULL或返回结构,但我不能.
这是我目前的解决方案,忽略了伪指针:
uint8_t *seconds, *dummy0, *dummy1, *dummy3, *dummy4, *dummy5;
GetTime( dummy0, dummy1, dummy3, dummy4, dummy5, seconds );
Run Code Online (Sandbox Code Playgroud)
是否有更简洁的方法来解决这个问题,减少混乱?
我的构造函数需要一个std::array.我试图给它一个默认值,但调用没有参数的构造函数会出现此错误:
$ g++ -std=c++11 -Wall -Werror -Wextra -pedantic-errors test.cpp Position.cpp -o test
test.cpp: In function ‘int main()’:
test.cpp:14:29: error: array must be initialized with a brace-enclosed initializer
Position *y = new Position();
^
test.cpp:14:29: error: too many initializers for ‘std::array<unsigned char, 8ul>’
Run Code Online (Sandbox Code Playgroud)
行号不同.这是我的代码:
// test.cpp
int main() {
Position *x = new Position({1,1,1,1,1,1,1,1}); // works
Position *y = new Position(); // does not work
}
// Position.cpp
#include <cstdint>
#include <array>
#include "Position.h"
Position::Position( std::array<uint8_t,8> columns_ ) { …Run Code Online (Sandbox Code Playgroud)