有没有办法延迟定义数组的大小,直到类方法或构造函数?
我在想什么可能看起来像这样,当然,它不起作用:
class Test
{
private:
int _array[][];
public:
Test::Test(int width, int height);
};
Test::Test(int width, int height)
{
_array[width][height];
}
Run Code Online (Sandbox Code Playgroud) 这似乎不一致.为什么我们使用&Example :: func而不是Example :: func?是否有用于Example :: func或&exampleFunction?看起来我们不能对函数进行引用,因此排除了Example :: func.我想不出一种使用&exampleFunction的方法,因为exampleFunction已经返回一个指针.
#include <iostream>
class Example {
public:
void func() { std::cout <<"print me\n"; }
};
void exampleFunction() { std::cout << "print me too\n"; }
typedef void (Example::*ExampleFunc_t)();
typedef void (*ExampleFunction_t)();
int main()
{
Example e;
ExampleFunc_t f = &Example::func;
ExampleFunction_t f2 = exampleFunction;
(e.*f)();
f2();
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我现在遇到过这种情况,我想知道解决循环引用的OO方法是什么.我的意思是,A类将B类作为成员,B又将A类作为成员.
这方面的一个例子是具有Person配偶作为成员的类Person.
Person jack = new Person("Jack");
Person jill = new Person("Jill");
jack.setSpouse(jill);
jill.setSpouse(jack);
Run Code Online (Sandbox Code Playgroud)
另一个例子是Product类,它将一些其他产品的集合作为成员.该集合可以是例如对该产品感兴趣的人可能也感兴趣的产品,并且我们希望在每个产品基础上维护该列表,而不是在相同的共享属性上(例如,我们不希望仅显示)同类别中的所有其他产品).
Product pc = new Product("pc");
Product monitor = new Product("monitor");
Product tv = new Product("tv");
pc.setSeeAlso({monitor, tv});
monitor.setSeeAlso({pc});
tv.setSeeAlso(null);
Run Code Online (Sandbox Code Playgroud)
(这些产品只是为了说明问题,问题不在于某些产品是否相互关联)
这在OOP中总体上是不好的设计吗?所有OOP语言是否/应该允许这样做,还是只是不好的做法?如果这是不好的做法,解决这个问题最好的方法是什么?
我尝试使用以下代码在字符串类型下进行字符比较:
vector <int> getQuality(string seedTag, vector <string> &MuTag) {
vector <int> Quals;
for (unsigned i = 0; i<MuTag.size(); i++) {
Quals.push_back(-40);
cout << MuTag[i] << " " << seedTag[i] << endl;
if (MuTag[i] == seedTag[i]) { // This line 33 with error
Quals.push_back(40);
}
}
return Quals;
}
Run Code Online (Sandbox Code Playgroud)
但为什么会出现这样的错误:
Mycode.cc:33: error: no match for 'operator==' in '(+ MuTag)->std::vector<_Tp, _Alloc>::operator[] [with _Tp = std::string, _Alloc = std::allocator<std::string>](((long unsigned int)i)) == seedTag. std::basic_string<_CharT, _Traits, _Alloc>::operator[] [with _CharT = char, _Traits = std::char_traits<char>, …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个bookmarklet,如果找不到该对象,它将加载jQuery.加载将检查jQuery的版本.代码如下:
(function(){
var myBkl = {
loadScript: function(src) {
if(window.jQuery && window.jQuery.fn.jquery == '1.3.2'){
return;
}
var s = document.createElement('script');
s.setAttribute('src', src);
s.setAttribute('type', 'text/javascript');
document.getElementsByTagName('head')[0].appendChild(s);
},
whenLoaded: function(callback){
if (typeof(window.jQuery) !== 'undefined' && window.jQuery.fn.jquery == '1.3.2') {
callback(window.jQuery);
}
else {
setTimeout((function() {myBkl.whenLoaded(callback); }), 100);
}
},
init: function($){
console.log($.fn.jquery);
}
};
myBkl.loadScript('http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js');
myBkl.whenLoaded(myBkl.init);
})();
Run Code Online (Sandbox Code Playgroud)
我使用这个bookmarklet构建器来创建书签http://subsimple.com/bookmarklets/jsbuilder.htm
显然,如果页面已经加载了jQuery.加载1.3.2脚本将覆盖页面上的window.jQuery对象.我只是想知道有没有让1.3.2加载到另一个自命名变量?用jQuery.noConflict(true);
?
我通过该ApplicationHost.CreateApplicationHost
方法托管ASP.NET运行时.当我修改web.config
应用程序运行时,我看到很多第一次机会ThreadAbortException
抛出.这是在我的应用程序崩溃之前.我假设这是因为运行时已检测到配置更改并想要重新启动.
这对我们来说并不是真正受支持的场景,所以我更愿意,如果我可以关闭自动重新加载.
有谁知道如何做到这一点?
我正在对枚举进行一些阅读,发现它们与声明常量非常相似.我怎么知道何时使用常量而不是枚举,反之亦然.使用枚举有哪些优点?
当我按下表单内的按钮时,我想要隐藏表单.当我这样做时,必须在任务栏中显示某些内容,如果我单击该内容,则表单将再次进入可见状态.
编辑:我不应该最小化或调整表单大小.
我遇到了NSString的问题.
NSString* str = [[NSString alloc] initWithString:@"Hello world"];
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我是否需要释放对象str?根据规则,此对象是使用alloc创建的,因此应使用release方法显式释放.但是,当我没有明确释放它时,我在仪器中找不到任何内存泄漏.当NSString被NSNumber替换时,会发生内存泄漏.
谁能给我一些建议?谢谢.
c++ ×4
c# ×2
arrays ×1
asp.net ×1
bookmarklet ×1
cocoa ×1
comparison ×1
delay ×1
enums ×1
httpruntime ×1
iis ×1
jquery ×1
objective-c ×1
oop ×1
recycle ×1
size ×1
stl ×1
string ×1
web-config ×1