我一直习惯cout打印声明,但现在我想学习打印passing the stream,就像 void print(std::ostream&) const;我目前的打印功能一样
template <class T>
void Mystack<T>::print()
{
for (int i = 0; i <= top; i++)
{
std::cout << input[i] << " ";
}
}
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
ostream.ostream在我的功能中实现.我试图ostream从互联网来源了解但无法理解.请帮忙.以下是完整的运行代码:
//*************STACK CODE***************//
//VERY GOOD EXAMPLE TO UNDERSTAND RULE OF THREE FOR BEGINEERS http://www.drdobbs.com/c-made-easier-the-rule-of-three/184401400
//RULE OF THREE : Video : https://www.youtube.com/watch?v=F-7Rpt2D-zo
//Thumb Rule : Whenever we have class which has members pointing to heap space we …Run Code Online (Sandbox Code Playgroud) 我有一个使用OpenGL的Qt项目,并使用Qt 5.4.0进行编译.今天我将Qt升级到5.5.0,我的项目停止编译.它会引发很多unresolved external symbol错误,你可以在这里看到:
link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:debug\UI.exe @C:\Users\DWilches\AppData\Local\Temp\UI.exe.376.5500.jom
UIOpenGLVisualizer.obj : error LNK2019: unresolved external symbol __imp__glBegin@4 referenced in function "public: virtual void __thiscall UIOpenGLVisualizer::paintGL(void)" (?paintGL@UIOpenGLVisualizer@@UAEXXZ)
UIOpenGLVisualizer.obj : error LNK2019: unresolved external symbol __imp__glClearDepth@8 referenced in function "public: virtual void __thiscall UIOpenGLVisualizer::initializeGL(void)" (?initializeGL@UIOpenGLVisualizer@@UAEXXZ)
UIOpenGLVisualizer.obj : error LNK2019: unresolved external symbol __imp__glColor3f@12 referenced in function "public: virtual void __thiscall UIOpenGLVisualizer::paintGL(void)" (?paintGL@UIOpenGLVisualizer@@UAEXXZ)
UIOpenGLVisualizer.obj : error LNK2019: unresolved external symbol __imp__glColor4f@16 …Run Code Online (Sandbox Code Playgroud) 我正在深入研究WiringPi-Python for Python 的代码,我找到了几个像这样的块:
def wiringPiSetup():
return _wiringpi2.wiringPiSetup()
wiringPiSetup = _wiringpi2.wiringPiSetup
Run Code Online (Sandbox Code Playgroud)
这对我来说有点令人费解,因为我觉得这个:
def wiringPiSetup():
return _wiringpi2.wiringPiSetup()
Run Code Online (Sandbox Code Playgroud)
会产生与此完全相同的结果:
wiringPiSetup = _wiringpi2.wiringPiSetup
Run Code Online (Sandbox Code Playgroud)
我知道第一个是声明一个新函数,第二个是对原始函数的引用,但在测试中我发现它们完全等价.看这里:
>>> def a():
... return 4
...
>>> def a1():
... return a()
...
>>> a2 = a
>>>
>>> a1()
4
>>> a2()
4
Run Code Online (Sandbox Code Playgroud)
那么,为什么WiringPi-Python在它们中任何一个都足够的时候放了?
BTW:
我正在尝试通过其指南向Google添加登录/注销:https: //developers.google.com/identity/sign-in/web/sign-in
但我面临一些问题.
index.html的:
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://apis.google.com/js/platform.js" async defer></script>
<meta name="google-signin-client_id" content="**my-google-api-key**.apps.googleusercontent.com">
<script>
gapi.load('auth2',function () {
gapi.auth2.init();
});
</script>
Run Code Online (Sandbox Code Playgroud)
app.component.html:
<div class="g-signin2" data-onsuccess="onSignIn"></div>
<a href="#" onclick="signOut();">Sign out</a>
Run Code Online (Sandbox Code Playgroud)
app.component.ts:
public onSignIn(googleUser):void {
var profile = googleUser.getBasicProfile();
console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead.
console.log('Name: ' + profile.getName());
console.log('Image URL: ' + profile.getImageUrl());
console.log('Email: ' + profile.getEmail());
}
public signOut():void {
var auth2 = gapi.auth2.getAuthInstance();
auth2.signOut().then(function () { …Run Code Online (Sandbox Code Playgroud) 当我用javac编译一个Java文件时,它会响应错误not a file(而不是file not found):
所以我尝试在WSL环境中编译它,它编译相同的文件.然后,我意识到这可能是因为我把文件放在OneDrive下,所以我将它移出OneDrive并再次尝试,然后javac工作:
之后,我在Onedrive下创建了一个空的java文件并再次尝试,这也显示not a file错误:
然后,我开始意识到当我在PowerShell中"dir"时,OneDrive下的文件模式包含一个"l"符号,表示"重新分析点".虽然我真的不明白这意味着什么,但我很好奇是否因为l我无法编译java文件.或者是否还有其他潜在问题.
这个问题是关于合作伙伴今天遇到的一些语法,虽然我们理解它是如何工作的,但我们不明白它为什么被允许(它的用途是什么?).
看看这个片段:
fun() -> ok end().
Run Code Online (Sandbox Code Playgroud)
没有最后一对括号,这将产生如下内容:
#Fun<erl_eval.20.82930912>
Run Code Online (Sandbox Code Playgroud)
但是对于它们,评估函数产生:
ok
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么Erlang允许这种语法?为什么我要创建一个函数只是立即调用它而不是只写出它的内容?它有什么实际用途吗?
我们唯一能想到的就是在乐趣的身体中引入局部变量(但这对我来说看起来很丑陋和不清楚).
请注意,这句法等是不是在二郎山不允许的,即使它遵循前者相同的概念:
fun() -> fun() -> ok end end()().
Run Code Online (Sandbox Code Playgroud)
(这意味着:一个函数A返回一个函数B.我正在评估A(从而产生B),然后评估B得到'ok').
当我学习scanf函数时,这是我的程序:
#include <stdio.h>
int main(int argc, char *argv[]) {
int day, year;
char monthName[20];
printf("separate day by /\n");
scanf("%d/%s/%d", &day, monthName, &year);
printf("%d %s %d\n", day, monthName, year);
printf("separate day by blank\n");
scanf("%d%s%d", &day, monthName, &year);
printf("%d %s %d\n", day, monthName, year);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输入和输出如下:
separate day by /
3/Dec/2016
3 Dec/2016 0
separate day by blank
3 Dec 2016
3 Dec 2016
Run Code Online (Sandbox Code Playgroud)
为什么会出现第二个/标记,零个字符也会出现?有没有办法或工具来分析这样的问题?
当我使用初始化列表创建结构,但初始化列表包含的元素少于我的结构时,我看到剩余的元素用零初始化.
这是一个未定义的行为,我看到零,因为我的编译器(VS2015)决定为我归零内存?
或者有人能指出我在C++中解释这种行为的文档?
这是我的代码:
struct Thing {
int value;
int* ptr;
};
void main() {
Thing thing { 5 };
std::cout << thing.value << " " << thing.ptr << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
这就是它打印的内容:
5 00000000
Run Code Online (Sandbox Code Playgroud)
最后一个元素是在没有初始化器的情况下归零的元素.
在AngularJS中,$onInit如果没有该功能就可以执行相同的初始化,则该功能的目的是什么?
例如:
module.component("myComponent", {
...
controller: function() {
const $ctrl = this;
$ctrl.$onInit = () => {
$ctrl.var1 = "hello";
$ctrl.var2 = { test: 3 };
}
}
});Run Code Online (Sandbox Code Playgroud)
也可以这样完成:
module.component("myComponent", {
...
controller: function() {
const $ctrl = this;
$ctrl.var1 = "hello";
$ctrl.var2 = { test: 3 };
}
});Run Code Online (Sandbox Code Playgroud)
在某些情况下$onInit有必要吗?
我在Qt创建器中有一个程序,可以在Windows机器上编译和运行.但是当我尝试在Mac OS X(10.9)中编译它时,我收到了以下消息:
Undefined symbols for architecture x86_64:
"std::__1::__basic_string_common<true>::__throw_length_error() const", referenced from:
std::__1::enable_if<__is_forward_iterator<char*>::value, void>::type std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init<char*>(char*, char*) in libVolumeSelectorLib.a(NetCDFDataSource.o)
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [UI.app/Contents/MacOS/UI] Error 1
14:38:02: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project VVSIT (kit: Desktop Qt 5.4.0 clang 64bit)
When executing step "Make"
Run Code Online (Sandbox Code Playgroud)
我已经尝试过再次清理和编译,以防一些Windows上构建的文件进入Mac,但事实并非如此,问题仍在继续.
我检查了这些帖子,但他们的解决方案不起作用:
不知道如何解决这个错误?
我有一个Qt应用程序QOpenGLWidget.在那个小部件中,我有我的OpenGL函数,它正如我所期望的那样呈现我的场景.
在那些渲染说明中,我放了以下几行,我得到了意想不到的结果:
void MyOpenGLVisualizer::paintGL()
{
GLint my_val = 0;
glGetIntegerv(GL_DRAW_BUFFER, &my_val);
std::cout << my_val << std::endl;
...
}
Run Code Online (Sandbox Code Playgroud)
这些行打印:36064这是0x8ce0.但根据glGet文档我希望它返回:GL_FRONT这是0x0404或者GL_BACK是0x0405.
我glGetError()在这些行之后调用,但它返回0.
我想,也许返回值是这些宏的OR-ED组合,但是这将包含所有的人: GL_BACK,GL_FRONT,等位.
那么,这36064意味着什么?
(如果有帮助,我使用Qt的OpenGL的包装:QOpenGLFunctions)
根据Instant的文档,最小的瞬间是-1000000000-01-01T00:00Z,所以年份-1000000000和时区是UTC.所以我希望这个程序能够工作,并且atOffset是一个noop:
import java.time.*;
public class A {
public static void main(String[] args) {
Instant i = Instant.MIN;
System.out.println(i);
System.out.println(i.atOffset(ZoneOffset.UTC));
}
}
Run Code Online (Sandbox Code Playgroud)
但相反,它会抛出此异常atOffset:
-1000000000-01-01T00:00:00Z
Exception in thread "main" java.time.DateTimeException: Invalid value for Year (valid values -999999999 - 999999999): -1000000000
at java.time.temporal.ValueRange.checkValidIntValue(ValueRange.java:330)
at java.time.temporal.ChronoField.checkValidIntValue(ChronoField.java:722)
at java.time.LocalDate.ofEpochDay(LocalDate.java:341)
at java.time.LocalDateTime.ofEpochSecond(LocalDateTime.java:422)
at java.time.OffsetDateTime.ofInstant(OffsetDateTime.java:328)
at java.time.Instant.atOffset(Instant.java:1195)
at A.main(A.java:7)
Run Code Online (Sandbox Code Playgroud)
那是一个错误吗?根据该验证的消息,最低年份是-999999999文件所说的-1000000000.
c++ ×4
java ×2
javascript ×2
opengl ×2
qt ×2
angular ×1
angularjs ×1
c ×1
clang++ ×1
erlang ×1
google-api ×1
iostream ×1
java-time ×1
ld ×1
macos ×1
ostream ×1
powershell ×1
python ×1
python-2.7 ×1
qt-creator ×1
scanf ×1
struct ×1
swig ×1