我有这段代码..
#include <iostream>
int main()
{
int r = 5;
const int * rptr= &r;
*rptr++; // undefined value (trash)
*rptr=3; // error
std::cout<<*rptr<<" "<<r<<std::endl;
rptr = new int (6);
std::cout<<*rptr<<" "<<r<<std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么当我尝试为指针指向的常量整数分配一个新值时它会显示错误,但当我尝试增加该值时却没有。
当我增加*rptr它时,它为它分配了一个未定义的值,所以我试图检查两者是否都指向同一个地址,并且它们确实指向了相同的地址。
这是前面代码的输出,但没有包含错误的行:
-1079235284 5
6 5
Run Code Online (Sandbox Code Playgroud)
在 Linux x86 机器上使用 g++4.8
我知道有类似的问题,但在我的案例中没有一个工作.嗨,我找不到为什么我有这个问题.这是我的个人文件:
#ifndef INDIVIDUAL_H
#define INDIVIDUAL_H
#include <vector>
#include <stdlib.h>
#include <time.h>
#include <iostream>
using namespace std;
class Individual{
private:
vector<unsigned int> chromosome;
unsigned int n_genes;
unsigned int N_colours_used = 0;
unsigned int fitness = 0;
public:
Individual(unsigned int ngenes){};
};
#endif
Run Code Online (Sandbox Code Playgroud)
这是我的个人.cpp文件:
#include "individual.h"
Individual :: Individual(unsigned int ngenes){
cout << "something" << endl;
}
Run Code Online (Sandbox Code Playgroud)
错误看起来像这样
src/individual.cpp:4:1: error: redefinition of ‘Individual::Individual(unsigned int)’
Individual :: Individual(unsigned int ngenes){
^
In file included from src/individual.cpp:1:0:
include/individual.h:24:13: note: ‘Individual::Individual(unsigned int)’ previously defined here …Run Code Online (Sandbox Code Playgroud) 所以出于某种原因,无论我进入这个If-Else语句,它返回"程序已中止",好像我输入了错误的请求答案...非常困惑,我似乎无法在网站周围找到任何相关内容!
int ch;
cout << "Do you have any extra credit points? (Enter Y/y or N/n)" << endl;
cin >> ch;
int ExtraCredit;
if (ch == 'Y' || ch== 'y')
{
cout << "Enter the number of extra credit points: ";
cin >> ExtraCredit
}
else if (ch!='n' || ch!='N' || ch != 'y' || ch != 'Y')
{
ExtraCredit=0;
cout<< Invalid entry. Program Aborted." << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我得到这种类型的错误:
"在函数... ...的多个定义"
""......首先在这里定义"
"警告:符号的大小......从"变为"
*代码使用标志编译:-ansi -Wall -pedantic-errors -Werror
*使用STL
那有什么解释吗?
先感谢您
这是代码:
#include <stdlib.h>
#include <iostream>
int main() {
std::cout << "Enter two numbers: " << std::endl;
int v1 = 0, v2 = 0;
std:cin >> v1 >> v2;
std::cout << "The sum of " << v1 << "and " v2 << "is " << v1+v2 << std:endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是错误:
g++ x.cpp
#x.cpp: In function ‘int main()’:
#x.cpp:23:9: error: ‘cin’ was not declared in this scope
#x.cpp:23:9: note: suggested alternative:
#In file included from x.cpp:19:0:
#/usr/include/c++/4.7/iostream:61:18: note: ‘std::cin’
#x.cpp:24:48: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用终端中的g ++在os x上编译一些c ++代码.但是,我不断收到错误,我不确定它的含义.我有3个文件,main.cpp; comp_fns.cpp和comp_fns.h.Window和Gene是两个不同的类.这是错误:
g++ -Wall main.cpp comp_fns.cpp
duplicate symbol Window::setValues(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)in:
/var/folders/jf/3y93rsfd1n55q2qd75y0w0r00000gn/T//cc51aFZg.o
/var/folders/jf/3y93rsfd1n55q2qd75y0w0r00000gn/T//cc2KNfcB.o
duplicate symbol Gene::setValues(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)in:
/var/folders/jf/3y93rsfd1n55q2qd75y0w0r00000gn/T//cc51aFZg.o
/var/folders/jf/3y93rsfd1n55q2qd75y0w0r00000gn/T//cc2KNfcB.o
ld: 2 duplicate symbols for architecture x86_64
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,如果需要我可以发布代码.编辑:我没有#include一个cpp文件到另一个.这是我的头文件,我认为问题可能出在那里.这是我的第一个cpp程序,所以可能会有一些明显的错误.我最初用C语言编写它并将其改为c ++,因此我可以学习如何做到这两点.
#ifndef __Compare_Data_C____comp_fns__
#define __Compare_Data_C____comp_fns__
#include <iostream>
#include <cstdlib>
#include <string>
#include <sstream>
using namespace std;
class Window {
public:
int …Run Code Online (Sandbox Code Playgroud) 我正在尝试在cygwin上编译以下代码(CYGWIN_NT-6.1-WOW64 1.7.28(0.271/5/3)i686):
// the integration routine
template <typename Method, typename F, typename Float>
double integrate(F f, Float a, Float b, int steps, Method m)
{
double s = 0;
double h = (b-a)/steps;
for (int i = 0; i < steps; ++i)
s += m(f, a + h*i, h);
return h*s;
}
// methods
class rectangular
{
public:
enum position_type { left, middle, right };
rectangular(position_type pos): position(pos) {}
template<typename F, typename Float>
double operator()(F f, Float x, …Run Code Online (Sandbox Code Playgroud) 这是什么c ++编译错误?我已经在另一台已配置的机器上编译了我的代码,所以我想我错过了在环境中要在C ++ 11中编译的东西(代码使用--std = c ++ 0x选项进行编译)。该错误似乎与C ++ 11中的新互斥功能有关。
In file included from /usr/include/c++/4.6/mutex:43:0,
from include/Ric_box_tele.h:4,
from src/Ric_box_tele.cpp:1:
/usr/include/c++/4.6/functional: In member function ‘void std::_Bind_result<_Result, _Functor(_Bound_args ...)>::__call(std::tuple<_Args ...>&&, std::_Index_tuple<_Indexes ...>, typename std::_Bind_result<_Result, _Functor(_Bound_args ...)>::__enable_if_void<_Res>::type) [with _Res = void, _Args = {}, int ..._Indexes = {0, 1, 2}, _Result = void, _Functor = std::_Mem_fn<void (Ric_box_tele::*)(Socket, int)>, _Bound_args = {Ric_box_tele*, Socket, int}, typename std::_Bind_result<_Result, _Functor(_Bound_args ...)>::__enable_if_void<_Res>::type = int]’:
/usr/include/c++/4.6/functional:1378:24: instantiated from ‘std::_Bind_result<_Result, _Functor(_Bound_args ...)>::result_type std::_Bind_result<_Result, _Functor(_Bound_args ...)>::operator()(_Args&& ...) [with _Args = {}, …Run Code Online (Sandbox Code Playgroud) 没有GCC或G ++的G ++编译只是翻译//包括旧的g ++版本.
当我试图从源代码安装g ++我看到文件
gcc.c
/* Default prefixes to attach to command names. */
#ifndef STANDARD_EXEC_PREFIX
#define STANDARD_EXEC_PREFIX "/usr/local/lib/gcc-"
#endif /* !defined STANDARD_EXEC_PREFIX */
Run Code Online (Sandbox Code Playgroud)
//来自g ++ 1.4*
我知道c ++是c类,我只想知道g ++是否可以在没有gcc的情况下编译c ++.
在尝试编译gnu绘图示例时,g ++编译器抱怨它无法找到位于/ usr/include/boost中的boost库.
准确地说:
致命错误:提升:没有这样的文件或目录#include
我用过这个命令
g++ -l /usr/include/boost -Wall -std=c++11 -lboost_iostreams exampleplot.cpp -o exampleplot.out
g++ -I /usr/include/boost/* -Wall -std=c++11 -lboost_iostreams exampleplot.cpp -o exampleplot.out
这里也试过我的包括:
#include <iostream>
#include <cstring>
#include <vector>
#include<cmath>
#include<algorithm>
#include "gnuplot-iostream.h"
#include <boost>
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我有什么问题,并建议如何解决?